【问题标题】:Intercept Session Start event for all applications拦截所有应用程序的会话开始事件
【发布时间】:2015-01-14 14:36:55
【问题描述】:

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

除了需要拦截的事件之外,我已经准备好了所有的部分。似乎所有 IHttpModule 事件都会在所有请求上触发。我认为 Session_Start 事件会是理想的,但看起来我不能从 IHttpModule 中绑定到它。

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

还有其他接口可以用来拦截 Session_Start 吗?还有其他推荐吗?

【问题讨论】:

  • “第一次启动会话”是什么意思?
  • 我想绑定一个用户第一次访问应用程序的事件。与 Session_Start 类似,但从模块级别不在应用程序本身中。

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


【解决方案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.
    }

【讨论】:

  • 我刚刚尝试了一个快速原型,这看起来很有效,不敢相信我之前错过了那个活动。谢谢!
猜你喜欢
  • 2018-03-30
  • 1970-01-01
  • 2011-05-15
  • 2013-05-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多