2011-08-16 5 views
1

を壊れている可能性があります私はvb.netのWebアプリを実行すると、次のエラーメッセージを取得しておいてください。無効なビューステート情報は

状態情報はこのページの無効であり、壊れている可能性があります。 View full message here.

は良い検索した後、私は正確に問題を説明 this Microsoft page、出くわしました。

シナリオ2:可能性の高い原因は、「シナリオ2」のようですあなたのページを変更、影が発生し、 ASP.NETの一時ファイルでコピーしたファイルは、再生するフォルダ。ユーザーはこの変更前に要求されたページ のコピーを持ち、ユーザーはそのフォルダのファイルを再生成した後に ページを投稿します。

しかし、奇妙なことにもかかわらず、修正プログラムがあるにもかかわらず、実際にはリンクが表示されません。

誰でも修正を提案できますか?

UPDATED:as recommended hereのPageノードにEnableEventValidation="False"を使用してこのエラーが発生しないようです。修正よりも回避策が多い

+0

シナリオ2は理由だけではありません。そのような場合には、そのような場合には例外がほとんどありません(Webサイトのファイルが変更された場合など)。一貫してこのエラーが発生している場合は、別の場所で問題が発生する可能性があります。この問題の別の一般的な原因はコントロールツリーの変更です。コントロールを動的に作成している場合は、そのエラーが発生する可能性があります。 – VinayC

+0

FYI - イベントの検証を無効にすることは良い解決策ではありません。そこには、多くの悪いことを防ぐためのセキュリティ機構の一部として存在しています。 – NotMe

+1

これは非常に刺激的な問題です。これまでのところ、サーバー側のコードではなく、特定のマシンでシステムを追跡しました。特定のマシンでWindows XP上のIEでグリッドビューを再ソートすることで問題を再現することができます。一見類似した設定の他のマシンには問題はありません。他のブラウザは、IEに障害が発生したマシンであっても問題を報告することはありません。 – fritterfatboy

答えて

1

Page.EnableEventValidation Propertyで説明されているように、EnableEventValidationを無効にすることはお勧めしません。

ASP.NET Temporary Folder内のすべてのファイルを削除することで、この問題が発生しています。

フォルダパス:

.NET 2:C:\ WINDOWS \ Microsoft.NET \ Frameworkの\ v2.0.50727の\ ASP.NETの一時ファイル
.NET 4:C:\ WINDOWS \ Microsoft.NET \フレームワーク\ v4.0.30319 \ Temporary ASP.NETファイル

0

これは過度の可能性がありますが、これはajaxのページコントロールへの呼び出しでの私のviewstateの問題を解決しました。 カスタムCompressedViewState:私は、ボタンやリンクをクリックしたときにのみ、というのMozilla Firefoxでこのエラーを得ていた、私のプロジェクトの一つに

private ObjectStateFormatter _formatter = new ObjectStateFormatter(); 
protected override void 
      SavePageStateToPersistenceMedium(object viewState) 
    { 
     MemoryStream ms = new MemoryStream(); 
     _formatter.Serialize(ms, viewState); 
     byte[] viewStateArray = ms.ToArray(); 
     ClientScript.RegisterHiddenField("__COMPRESSEDVIEWSTATE", 
      Convert.ToBase64String(
      CompressViewState.Compress(viewStateArray))); 
    } 
    protected override object LoadPageStateFromPersistenceMedium() 
    { 
     string vsString = Request.Form["__COMPRESSEDVIEWSTATE"]; 
     byte[] bytes = Convert.FromBase64String(vsString); 
     bytes = CompressViewState.Decompress(bytes); 
     return _formatter.Deserialize(
      Convert.ToBase64String(bytes)); 
    } 
1

:このコードを追加します 。

これは、Firefoxがフォームフィールドをキャッシュしているためです。この問題に遭遇する2つの方法。 OnPreInit snipet

あなたのCSファイルで保護されたオーバーライドボイド(EventArgsの電子) { base.OnPreInit(e)は、以下の

  1. 書き込み。 if(Request.Browser.MSDomVersion.Major == 0)//非IEブラウザの場合 { Response.Cache。SetNoStore(); }}

  2. ページのロードで、statemet

    Response.Cache.SetNoStore()は、次の書き込み。

エラーが取り除かれ、満足できる結果が得られました。

http://yourtahir.wordpress.com/2008/06/26/the-state-information-is-invalid-for-this-page-and-might-be-corrupted/

関連する問題