3

ASP.Net 4.5 と Visual Studio 2012 を使用してアプリケーションを構築しています。マスター ページには Anti-XSRF コードが含まれています。そのコードは、VS でアプリケーションを使い始めたときにそこにありました。ただし、ランダムにエラーが発生します。

System.InvalidOperationException: Anti-XSRF トークンの検証に失敗しました。

これは、ポストバックのないページとポストバックのあるログイン ページで発生しますが、ランダムに完了します。ある人が最近、テスト ユーザーとしてログインし、マシンをしばらく非アクティブなままにして、戻ったときに安全なページにアクセスしようとし、ログインを求められ、別のユーザーとしてログインした後、このエラーを受け取ったと述べました。それ以外の場合、他のユーザーは、ポストバックがないホームページにアクセスしたときに発生すると言います。

この問題の解決策を見つけることができませんでした。他の誰かがこの問題を抱えていますか?

4

1 に答える 1

6

現在のユーザー名は、ページがブラウザーに表示されるときに __VIEWSTATE に埋め込まれます。ポストバックが発生すると、アンチ XSRF ロジックは、現在のユーザー名が送信された __VIEWSTATE に埋め込まれているものと一致することを確認します。そのため、ワークフローの途中 (ポストバックあり) でログイン ユーザーを変更すると、エラーが発生することが予想されます。ユーザーが単にサイト内を移動している場合、このエラーは発生しません。

サーバー ログを確認すると、実際にユーザーが障害が発生したページへのポストバックを実行していたことがわかります。XSRF ロジックは、「if (IsPostBack)」チェックで既に調整されています。これは、Site.master 分離コード ファイルを参照して、自分で確認できます。

于 2013-11-08T17:06:18.887 に答える