2011-07-05 9 views
1

この問題を調査するのに約2日を費やしましたが、解決策を見つけることができない、または提供されていないようです私が持っている問題に完全に対処する。ASP.NET/FireFox - このページの状態情報は無効であり、壊れている可能性があります。

  • 私はASP.NETアプリケーション、断続的に.NET 4.0
  • を持って、我々は、ビューステートが破損
  • に関するエラーが発生しますこれはのみにしようとMozillaベースのブラウザ(100%確実ではない、に適用するようです
  • これは一貫性のある再現可能なアクションから始まるようです。
  • MACと同期が外れることに関連していません。マシンキー/検証キーが明示的に設定され、自動生成に設定されていません。
  • これはDEV環境でのみ発生しています。/UAT
  • 更新パネルを持っているページで起こっている - ページの中には非常に大きなビューステートがあり、そのうちのいくつかは非常に小さいビューステートです
  • 再表示されないようです - 生成可能。私が見つけた解決策は、「ページをクリックし、別のページに行くボタンをクリックし、ブラウザでクリックしてエラーが発生する」ということに関連しています。これはそうではありません。
  • Windows Enterprise 2008のIIS7、16GB RAM、PAEが有効です。
  • ページはしばらくの間うまく動作し、次に動作を停止します - IISを再起動すると、この問題は一時的に解決されます。
  • これは、Webファーム に例外/スタックトレースを実行していない:

説明:

Error occurred System.Web.HttpException (0x80004005): The state information is invalid for this page and might be corrupted. ---> System.Web.UI.ViewStateException: Invalid viewstate. 

Client IP: <removed> 

Port: 21884 

Referer: <removed> 

Path: /PathToPage/Page.aspx 

User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; MS-RTC LM 8) 

ViewState: /wEPDwULLTEyNTU4MDc4NT....<removed by user>... ---> System.OutOfMemoryException: Exception of type 'System.OutOfMemoryException' was thrown. 

at System.Convert.FromBase64String(String s) 

at System.Web.UI.ObjectStateFormatter.Deserialize(String inputString) 

at System.Web.UI.ObjectStateFormatter.System.Web.UI.IStateFormatter.Deserialize(String serializedState) 

at System.Web.UI.Util.DeserializeWithAssert(IStateFormatter formatter, String serializedState) 

at System.Web.UI.HiddenFieldPageStatePersister.Load() 

--- End of inner exception stack trace --- 

at System.Web.UI.ViewStateException.ThrowError(Exception inner, String persistedState, String errorPageMessage, Boolean macValidationError) 

at System.Web.UI.ViewStateException.ThrowViewStateError(Exception inner, String persistedState) 

at System.Web.UI.HiddenFieldPageStatePersister.Load() 

at System.Web.UI.Page.LoadPageStateFromPersistenceMedium() 

at System.Web.UI.Page.LoadAllState() 

at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) 

答えて

0

を、この問題が唯一の更新パネルのページに起こるので、私はあなたが後にエラーが出ると思われますビューステートを壊す更新パネル、あなたは単純に捕まえられず、このエラーを見ることはできません。

一時的な解決策を見つけるには、エラーが発生したかどうかを確認するために更新パネルを削除します。

第2の解決策は、中にあるプロキシまたはルーターの一部が破損した場合に、ビューステートを圧縮してより小さな部分をカットすることです。読み

いくつかのより:ASP.Net Post timeoutCryptographicException: Padding is invalid and cannot be removed and Validation of viewstate MAC failed

+0

をこのエラーが始まっ最後の時間は、私は生産ブランチからコードのコピーを持って、(同じコードベースを本番データベースにそれを指摘し、それをローカルに走りました、同じデータベース)。ユーザーのエラーを引き起こしていた画面/エンティティに行き、アクションを繰り返し、すべて正常に機能しました。プロダクション・ウェブサイトにログインし、FireFoxでのアクションを繰り返した。クラッシュした。 物事は一定期間(以前は月曜日+それが起きてから数日後に数回起こっていましたが、環境の変更は適用されませんでした。 – TinMan

+0

@TimManこれもgzipの失敗のようです。一部のページでコンテンツの長さを設定した場合は、それを削除してもう一度テストしてください。ページが送信された後にgzipが再び発生すると、このcontent-lengthがfalseになる可能性があり、これによりfirefoxがクラッシュします。コンテンツの長さはページの長さであり、gzipはエラーを出し、firefoxはクラッシュするのでクラッシュします。 – Aristos

関連する問題