Я пытаюсь выполнить некоторые действия в конце каждого запроса. Я изменил Application_Start(), который генерируется при создании нового проекта, чтобы выполнить тест:
protected void Application_Start()
{
EndRequest += (s, e) =>
{
Console.Write("fghfgh");
};
RegisterRoutes(RouteTable.Routes);
}
Лямбда не будет вызвана. Любые идеи, почему?
изменить: Я вижу, что они делают аналогичную вещь в SharpArch [http://code.google.com/p/sharp-architecture/], и она там работает... И нет, я не хочу использовать HttpModule.
edit2: Единственным обходным решением, которое я нашел, является использование Application_EndRequest в сочетании с частным статическим членом global.asax:
private static WebSessionStorage wss;
protected void Application_Start()
{
//...
wss = new WebSessionStorage(this);
//...
}
protected void Application_EndRequest(object sender, EventArgs e)
{
wss.EndRequest(sender, e);
}
wss должен быть закрытым, потому что кажется, что Application_EndRequest вызывается с использованием другого экземпляра объекта (this). Это также может быть причиной моего события (как описано в начале), которое не вызывается.