Мне нужно поймать события состояния сеанса, используя Session_Start() и Session_End(). Природа моего проекта ограничивает изменение исходного кода, поэтому я не могу добавить эти методы в файл global.asax. Как мне это сделать? Я уже пробовал наследовать класс global.asax.cs и добавил туда методы, но они не попали.Захват событий сессии за пределами global.asax (C#, .Net)?
2
A
ответ
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>