プロが教えるわが家の防犯対策術!

ASPX(C#)でサイトを作っています。

ページ内にフォームボタンを設置し、
そのボタンを押すと以下のエラーが出ます。


【'/' アプリケーションでサーバーエラーが発生しました。このページの状態情報は無効です。壊れている可能性があります。】


PCやSoftbank携帯では出ていないのですが、au携帯で出ています。
原因がつかめずにいて、検索してみても以下のページが見つかるだけで、
そのページで対処している事が出来ません。

http://d.hatena.ne.jp/zeeep01/?of=3
【対応:これらのタグはASP.netが自動的に生成するものなので、デザイン上に不要である。】

ASP.netが自動的に生成するとの事で削除できないようです……

ちなみに、使っているサーバーは以下の通りです。

マシン:IBM System x3200 M3
OS:Windows Server 2008

A 回答 (3件)

おそらく「このページの ViewState は無効です」の誤訳。


ViewState が肥大化していませんか?

この回答への補足

「__VIEWSTATE」を分割して小さくする方法がわかりました。

maxPageStateFieldLengthのプロパティをWeb.configで設定すると
分割されて小さくなりました。

<pages maxPageStateFieldLength = "100">

しかしながら、エラーは解消されませんでした。

au携帯(EzWeb)独特のエラーなのでしょうか?

補足日時:2011/08/03 17:00
    • good
    • 0
この回答へのお礼

ありがとうございます。

やっぱり、「__VIEWSTATE」のvalueが肥大化しているのが原因ですよね……
たしかに、1000~2000文字もの大きさになっています。
このASP.netによって自動生成される「__VIEWSTATE」を
小さくする方法は無いでしょうか?

お礼日時:2011/08/03 15:27

ページのトレース情報を出力するには?


http://www.atmarkit.co.jp/fdotnet/dotnettips/040 …

au端末でデータをPOSTできない!!
http://yucchi3.cocolog-nifty.com/blog/2009/06/au …
    • good
    • 0
この回答へのお礼

ページのトレース情報では問題なくデータが入っていました。

au端末でデータをPOSTできない!!
の方の<div>を<form>の中から無くすということですが、
自動生成される「__VIEWSTATE」が、<div>の中に入ってしまいます。
以下のソースが自動生成されているので、<div>を消すことが出来ません。

もし、<div>が問題でしたら、解決することが出来ませんね……

-----------------------

<div>
<input type="hidden" name="__VIEWSTATEFIELDCOUNT" id="__VIEWSTATEFIELDCOUNT" value="4" />
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwULLTE5NjMzNDI4OTEPZBYCZg9kFgICAw9kFgQCAQ9kFgICAQ8PFgIeCEltYWdlVXJsBTBodHRwOi8vcHJpZ2xhLm5ldC9y" />
<input type="hidden" name="__VIEWSTATE1" id="__VIEWSTATE1" value="ZXNvdXJjZS9pbWcvcGFnZS90aXRsZTEyOC5naWZkZAIFDw8WBB4LTmF2aWdhdGVVcmwFDn4vQ29tcGFueS5hc3B4HgRUZXh0BSom" />
<input type="hidden" name="__VIEWSTATE2" id="__VIEWSTATE2" value="Y29weTsgMjAxMSBBTUfjgqjjg7Pjgr/jg4bjgqTjg7Pjg6Hjg7Pjg4hkZBgBBR5fX0NvbnRyb2xzUmVxdWlyZVBvc3RCYWNrS2V5" />
<input type="hidden" name="__VIEWSTATE3" id="__VIEWSTATE3" value="X18WAQUmY3RsMDAkQ3RybFBsYWNlX2JvZHkkQXV0b0xvZ2luQ2hlY2tCb3jhJpmU+y6/VQCDc31TTnbnuTA1Mw==" />
</div>

お礼日時:2011/08/03 17:52

ViewState の情報を Session に保存する方法


http://d.hatena.ne.jp/fyts/20080229/asp

この回答への補足

自己解決しました!

どうやら、フォームタグの中に、
【enctype="multipart/form-data"】
が入っていたのが原因でした。

フォームデータをバイナリ変換するタグなのですが、
それが、【__VIEWSTATE】に対して悪さをしていたようです。

検証に付き合っていただきありがとうございました。

補足日時:2011/08/04 18:12
    • good
    • 0
この回答へのお礼

ViewStateの情報をSessionに保存するのは実装できました。

とりあえず、全部のページから呼び出す。
public class BasePage : System.Web.UI.Page の中に、
LoadPageStateFromPersistenceMedium と
SavePageStateToPersistenceMedium の
オーバーライドを入れました。

そうすることによって、_VIRESTATEに値が入らなくなりました。

<div>
<input type="hidden" name="__VIEWSTATE" id="
__VIEWSTATE" value="" />
</div>

ですが、【'/' アプリケーションでサーバーエラーが発生しました。このページの状態情報は無効です。壊れている可能性があります。】のエラーは直りませんでした。

空のデータを入れてる__VIEWSTATEが残ってるのが原因なのか、
そもそも、__VIEWSTATEが存在していること自体が原因なのか、
もうちょっと検証していきます。

お礼日時:2011/08/04 10:21

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!