1

この投稿を重複としてマークしないでください。。私はasp.netを初めて使用するので、問題を解決するのを手伝ってください。理解するのにいくつかの問題があります。

私はVS2010に取り組んでおりasp.netWebサイトに慣れようとしています。Default.aspxとResult.aspxという2つのWebページがあります。

Default.aspx

<form id="Form1" runat="server" action="Result.aspx">  
    //Some Controllers (Dynamically added textboxes and submit button)
</form>  

フォームに記入して送信すると、次のエラーが発生します。

ビューステートMACの検証に失敗しました。このアプリケーションがWebファームまたはクラスターによってホストされている場合は、構成で同じvalidationKeyと検証アルゴリズムが指定されていることを確認してください。AutoGenerateはクラスターでは使用できません。

追加しようとしましEnableViewStateMac="false"たが、うまくいきませんでした。

これを修正するようにアドバイスしてください。なぜこれが発生するのか説明していただければ幸いです。

4

1 に答える 1

2

ASP.NETは、Windowsフォーム開発パラダイムをエミュレートするように設計された、Web開発の他の言語とは非常に異なるモデルを持っています。他の言語では別のURLに投稿するのが一般的ですが、ASP.NETでの操作は通常、同じページのイベントに投稿することで実行されます。発生している問題は、ViewStateを別のページに投稿しているという事実に関連しています。http://blogs.msdn.com/b/tess/archive/2009/04/14/validation-of-viewstate-mac-failedを参照してください。 -インストール後-net-3-5-sp1.aspx

余談ですが、本番サーバーでEnableViewStateMac = false "を設定しないでください。これは、ユーザーがビューステートに保持しているデータの改ざんを防ぐメカニズムであり、オフに切り替えるとこの保護が解除されます。これは、問題ではなく、原因です。

この場合、これが問題になるとは思いませんが、このエラーでは、セッションにデータを保存する前に、ViewStateUserKeyをセッションIDに設定していないことを常に確認する価値があります(ASP.NETはセッションIDを追跡しません)セッションにデータが含まれていない場合)。

于 2013-01-15T02:10:11.410 に答える