所有应用程序的拦截会话启动事件

时间:2015-01-14 14:36:55

标签: c# asp.net iis iis-7 iis-7.5

我有一个IIS服务器(7.5),它托管多个应用程序,每个应用程序都以自己的应用程序池标识运行。我正在尝试编写一些拦截Session On Start事件的代码。我已成功编写了为所有请求处理的其他IHttpModule,但在这种情况下,我只想在第一次启动会话时拦截。我希望在我的网站中为全球级别的所有Web应用程序执行此操作。我的计划是使用它来基于每个Web应用程序捕获用户的上次登录日期,以满足审核要求。

除了我需要拦截的事件外,我已经完成了所有的工作。似乎所有IHttpModule事件都会触发所有请求。我认为Session_Start事件是理想的,但看起来我不能从IHttpModule中加入它。

我查看了SessionStateUtility,但我不想重写会话功能,我只想拦截启动事件。

是否有其他界面可用于拦截Session_Start?还有其他建议吗?

1 个答案:

答案 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.
    }