これはやや一般的な問題であることはわかっていますが、まだ解決策を見つけていないので、すべてのヘルプやコメントを本当に感謝しています.
IHttpModule 実装では、Init メソッドで次のようにハンドラーをセットアップしました。
public void Init(HttpApplication context)
{
context.PreRequestHandlerExecute += new EventHandler(PreRequestHandlerExecute);
}
PreRequestHandlerExecute メソッドでは、すべての AJAX 呼び出しに対して、「このコンテキストではセッション状態を利用できません」という例外が発生します。
public void PostRequestHandlerExecute(Object application, EventArgs e)
{
HttpApplication app = application as HttpApplication;
var a = app.Session["csrf_token"];
または、これを行うと NullReferenceException が発生します
var b = HttpContext.Current.Session["csrf_token"];
セッション内のオブジェクトにアクセスしようとしています。オブジェクトはそこに置かれ、非 ajax 呼び出し中に問題なく読み取られます。
質問は具体的には次のとおりです。セッションではなくオブジェクトを保存できる、または保存する必要がある代替の場所はありますか (DB または Cookie 以外)?
- または -
いくつかの設定または何かを介して、AJAX リクエスト中にセッションを利用可能にする方法はありますか?
- または -
一般的に.Netですべきではないことをしているだけですか。私はネイティブの Java 担当者です。.Net の概念は私にとって初めてのことです。
(それが役立つ場合は、aspx MVP アプリケーションで CSRF を防ぐために「シンクロナイザー トークン パターン」を実装しようとしています)
どうもありがとうジョン