[解決済み] HTTPModuleからセッション状態にアクセスできますか?
2023-04-19 12:41:11
質問
HTTPModuleの中からユーザーのセッション変数を本当に更新することができましたが、私が見る限り、それは可能ではありません。
UPDATE。
私のコードは現在
OnBeginRequest ()
イベントハンドラ内で実行されています。
UPDATEです。
これまでにいただいたアドバイスに従って、これを
Init ()
ルーチンに追加してみました。
AddHandler context.PreRequestHandlerExecute, AddressOf OnPreRequestHandlerExecute
しかし、私の
OnPreRequestHandlerExecute
ルーチンでは、セッションの状態はまだ利用できません!
ありがとうございます。そして、私が何かを見逃しているならば、申し訳ありません
どのように解決するのですか?
これは ASP.NET フォーラム :
using System;
using System.Web;
using System.Web.Security;
using System.Web.SessionState;
using System.Diagnostics;
// This code demonstrates how to make session state available in HttpModule,
// regardless of requested resource.
// author: Tomasz Jastrzebski
public class MyHttpModule : IHttpModule
{
public void Init(HttpApplication application)
{
application.PostAcquireRequestState += new EventHandler(Application_PostAcquireRequestState);
application.PostMapRequestHandler += new EventHandler(Application_PostMapRequestHandler);
}
void Application_PostMapRequestHandler(object source, EventArgs e)
{
HttpApplication app = (HttpApplication)source;
if (app.Context.Handler is IReadOnlySessionState || app.Context.Handler is IRequiresSessionState) {
// no need to replace the current handler
return;
}
// swap the current handler
app.Context.Handler = new MyHttpHandler(app.Context.Handler);
}
void Application_PostAcquireRequestState(object source, EventArgs e)
{
HttpApplication app = (HttpApplication)source;
MyHttpHandler resourceHttpHandler = HttpContext.Current.Handler as MyHttpHandler;
if (resourceHttpHandler != null) {
// set the original handler back
HttpContext.Current.Handler = resourceHttpHandler.OriginalHandler;
}
// -> at this point session state should be available
Debug.Assert(app.Session != null, "it did not work :(");
}
public void Dispose()
{
}
// a temp handler used to force the SessionStateModule to load session state
public class MyHttpHandler : IHttpHandler, IRequiresSessionState
{
internal readonly IHttpHandler OriginalHandler;
public MyHttpHandler(IHttpHandler originalHandler)
{
OriginalHandler = originalHandler;
}
public void ProcessRequest(HttpContext context)
{
// do not worry, ProcessRequest() will not be called, but let's be safe
throw new InvalidOperationException("MyHttpHandler cannot process requests.");
}
public bool IsReusable
{
// IsReusable must be set to false since class has a member!
get { return false; }
}
}
}
関連
-
Net Core HttpClient処理 レスポンス圧縮の詳細
-
[解決済み] Server Error in '/' Application」エラーの解決方法を教えてください。
-
[解決済み] クライアントから危険な可能性のあるRequest.Formの値が検出された
-
[解決済み] web.configでmaxJsonLengthの長さを無制限に設定することは可能ですか?
-
[解決済み】すべてのASP.Netのウェブサイトが遅い理由を発見しました。
-
[解決済み] inheritInChildApplicationsを使用して子Webアプリケーションでweb.configの継承を回避する。
-
[解決済み] Visual Studio 新しいブラウザを開けない
-
[解決済み] WatiNかSeleniumか?[クローズド]
-
[解決済み] ASP.NET MVCのHtml.ActionLinkに "active "クラスを追加する方法
-
[解決済み] FormsAuthentication.SignOut()がユーザーをログアウトしない
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
pythonでpillowをインストールする3つの方法
-
.NET Coreでオブジェクトプールを使用する
-
NETガベージコレクション GC診断ツール dotnet-gcmon 使用方法
-
ASP.NET Core Web API チュートリアル プロジェクト構成図
-
再起動を伴わないNET5の設定変更は自動的に反映される
-
ネットパフォーマンスチューニング - ArrayPool 詳細
-
ajaxでポップアップアラートボックス
-
[解決済み] ASP.NET WebサイトとASP.NET Webアプリケーションのどちらを選ぶか?
-
[解決済み] Server.MapPath("."), Server.MapPath("~"), Server.MapPath(@"\"), Server.MapPath("/"). この違いは何ですか?
-
[解決済み] ASP.NET Web API - PUT & DELETE 動詞が許可されない - IIS 8