我有一个IIS服务器(7.5),它托管多个应用程序,每个应用程序都以自己的应用程序池标识运行。我正在尝试编写一些拦截Session On Start事件的代码。我已成功编写了为所有请求处理的其他IHttpModule,但在这种情况下,我只想在第一次启动会话时拦截。我希望在我的网站中为全球级别的所有Web应用程序执行此操作。我的计划是使用它来基于每个Web应用程序捕获用户的上次登录日期,以满足审核要求。
除了我需要拦截的事件外,我已经完成了所有的工作。似乎所有IHttpModule事件都会触发所有请求。我认为Session_Start事件是理想的,但看起来我不能从IHttpModule中加入它。
我查看了SessionStateUtility,但我不想重写会话功能,我只想拦截启动事件。
是否有其他界面可用于拦截Session_Start?还有其他建议吗?
答案 0 :(得分:1)
你尝试过这样的事吗?
public void Init(HttpApplication context)
{
var sessionModule = context.Modules["Session"] as SessionStateModule;
if (sessionModule != null)
{
sessionModule.Start += this.Session_Start;
}
}
private void Session_Start(object sender, EventArgs e)
{
// Do whatever you want to do here.
}