我试图在每个请求结束时执行一些操作。我更改了创建新项目时生成的 Application_Start() 以进行测试:
protected void Application_Start()
{
EndRequest += (s, e) =>
{
Console.Write("fghfgh");
};
RegisterRoutes(RouteTable.Routes);
}
不会调用 lambda。任何想法为什么?
编辑:我看到他们在 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)调用的。这也可能是我的事件(如开头所述)没有被调用的原因。