0

現在、ユーザーがこの投稿のタイトルにあるエラー メッセージを受け取る断続的な問題があります。

System.Web.UI.ViewStateException 無効なビューステートです。クライアント IP: 127.0.0.1 ポート: xxx リファラー: xxx

最終的に開発環境でこれを再現することができました。これは、20 分間非アクティブな状態が続いた後にフォームを投稿することに関連しているようです。

最初はセッションのタイムアウトが問題の原因だと思っていましたが、どうやらそうではありませんでした。

次の投稿を見つけました。

ビューステート タイムアウト エラー

これは、ViewState 暗号化キーの有効期間が有限であり、既定でサーバー レベルで次のように設定されていることを示唆しています。

<machineKey validationKey="AutoGenerate,IsolateApps"  
            decryptionKey="AutoGenerate,IsolateApps" 
            validation="SHA1" decryption="Auto" />

奇妙なことに、これはすべてのユーザーに対して同時に発生するわけではないため、アプリ プールのリサイクルではありません。

ユーザーセッションごとにキーが生成されるかどうかは誰にもわかりませんか?

提案どおりに静的マシンキー構成を追加することで、このエラーを修正できました

<machineKey validationKey="9664D19D67A5EE43FE77CD2B660A57DF254B15714935DDDDAAC94BC66C5C398F894380AD56572C8762A1AB116B9070C7ACC7F32B489D23476CEA909448831AF3" 
  decryptionKey="CAD9BBC02543433C50CD4A11EA706F0F25FCD51F28E9DEAF20361F0AA2AB3793" 
  validation="SHA1" 
  decryption="AES" 
/>

これは本番環境で安全に行うことができますか? アプリケーションは約 10 年間実行されており、長所と短所を知らずに行うのは気が進まないグローバルな変更であるため、再確認したかった.

前もって感謝します。

4

1 に答える 1