我需要使用Session_Start()和Session_End()来捕获会话状态事件。我的项目的性质限制了更改源代码,因此我无法将这些方法添加到global.asax文件中。我该怎么做?我已经尝试继承global.asax.cs类并在那里添加了方法,但它们没有命中。
答案 0 :(得分:0)
您可以使用HTTP Module执行此操作。这是一个例子:
public class SessionCatchingModule : IHttpModule //You will need to import System.Web
{
public void Init(HttpApplication context)
{
//Get the SessionstateModule and attach our own events to it
var module = context.Modules["Session"] as SessionStateModule;
if (module != null)
{
module.Start += this.Session_Start;
module.End += this.Session_end;
}
}
private void Session_Start(object sender, EventArgs args)
{
//Oh look, a session has started
}
private void Session_End(object sender, EventArgs args)
{
//Oh look, a session has ended
}
}
现在在web.config
中确保正在加载模块:
<system.webServer>
<modules>
<add name="SessionCatchingModule"
type="YourNamespace.Goes.Here., SessionCatchingModule" />
</modules>
</system.webServer>