- ベストアンサー
ASPX(C#)でサイトを作っています。ページの状態情報は無効でエラーが発生
- ASPX(C#)で作成されたサイトで、「このページの状態情報は無効です」エラーが発生しています。特にau携帯で問題が発生しており、原因や対処方法がわかりません。
- au携帯でASPX(C#)で作成されたサイトを閲覧すると、「このページの状態情報は無効です」というエラーが表示されます。問題の原因や解決策がわからず困っています。
- ASPX(C#)で作成したサイトで、au携帯での閲覧時に「このページの状態情報は無効です」というエラーが発生しています。原因や対処方法がわからず、解決策を探しています。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
ViewState の情報を Session に保存する方法 http://d.hatena.ne.jp/fyts/20080229/asp
その他の回答 (2)
- todo36
- ベストアンサー率58% (728/1234)
ページのトレース情報を出力するには? http://www.atmarkit.co.jp/fdotnet/dotnettips/040trace/trace.html au端末でデータをPOSTできない!! http://yucchi3.cocolog-nifty.com/blog/2009/06/aupost-ef99.html
お礼
ページのトレース情報では問題なくデータが入っていました。 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>
- todo36
- ベストアンサー率58% (728/1234)
おそらく「このページの ViewState は無効です」の誤訳。 ViewState が肥大化していませんか?
お礼
ありがとうございます。 やっぱり、「__VIEWSTATE」のvalueが肥大化しているのが原因ですよね…… たしかに、1000~2000文字もの大きさになっています。 このASP.netによって自動生成される「__VIEWSTATE」を 小さくする方法は無いでしょうか?
補足
「__VIEWSTATE」を分割して小さくする方法がわかりました。 maxPageStateFieldLengthのプロパティをWeb.configで設定すると 分割されて小さくなりました。 <pages maxPageStateFieldLength = "100"> しかしながら、エラーは解消されませんでした。 au携帯(EzWeb)独特のエラーなのでしょうか?
お礼
ViewStateの情報をSessionに保存するのは実装できました。 とりあえず、全部のページから呼び出す。 public class BasePage : System.Web.UI.Page の中に、 LoadPageStateFromPersistenceMedium と SavePageStateToPersistenceMedium の オーバーライドを入れました。 そうすることによって、_VIRESTATEに値が入らなくなりました。 <div> <input type="hidden" name="__VIEWSTATE" id=" __VIEWSTATE" value="" /> </div> ですが、【'/' アプリケーションでサーバーエラーが発生しました。このページの状態情報は無効です。壊れている可能性があります。】のエラーは直りませんでした。 空のデータを入れてる__VIEWSTATEが残ってるのが原因なのか、 そもそも、__VIEWSTATEが存在していること自体が原因なのか、 もうちょっと検証していきます。
補足
自己解決しました! どうやら、フォームタグの中に、 【enctype="multipart/form-data"】 が入っていたのが原因でした。 フォームデータをバイナリ変換するタグなのですが、 それが、【__VIEWSTATE】に対して悪さをしていたようです。 検証に付き合っていただきありがとうございました。