この問題に対する標準的な対応をすべて試したと思います。また、この問題に関する何百もの質問や投稿を読んだことは知っていますが、いずれも解決していないようで、原因を明らかにしているようには見えません。私のシナリオにあります。(私は 5 時間ダウンしており、それに近づいていません :-( )
2 台のサーバーの Web ファームがあります。
両方のマシンの machine.config にマシン キーと検証キーを設定しました
暗号化: SHA1、復号化: AES - これらはデフォルトです。変更することはできますか?
チェーン内の他の構成ファイル (web.cfg、apphost など) にこれらの値が設定されていないことを確認しました。
マシン キーの値を吐き出すページを (この SO に基づいて)サイトに追加し、それらが両方のマシンへの要求全体で同じであり、machine .config にある値と一致することを確認しました。
サーバー側のセッション状態は共有状態サーバーにあります。セッション ID が 2 つのサーバーへの要求間で一定のままであることを確認しました。
投稿を開始する前に、ページが完全に読み込まれ、__EVENTVALIDATION 隠しフィールドがページにレンダリングされていることを確認しました。ビューステートのサイズは 7.64kb でそれほど悪くありません
サーバー 1 への要求からページがレンダリングされ、サーバー 2 に戻されると、恐ろしい結果が得られます...
Error Message:
Unable to validate data.
at System.Web.Configuration.MachineKeySection.GetDecodedData(Byte[] buf, Byte[] modifier, Int32 start, Int32 length, Int32& dataLength)
at System.Web.UI.ObjectStateFormatter.Deserialize(String inputString) HttpApplication.RecordError => HttpApplication.RaiseOnError => global_asax.Application_Error
投稿は、標準の純粋な asp リンクボタンによってトリガーされます。ページで ajax が実行されることはありません。
どんな助けでも大歓迎です。
enableViewStateMAC = false を設定することは解決策ではありません:-)