我试图在每个请求结束时执行一些操作。 我改变了的Application_Start()这是当创建新的项目进行测试产生:ASP.NET MVC不会调用global.asax'EndRequest
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中的私有静态成员:因为它似乎像Application_EndRequest采用不同的是被称为
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必须是私有实例对象(this)。这也可能是我的事件(如开头所述)未被调用的原因。
u shoudl接受这个问题的答案 – Simon 2010-01-08 02:13:03
你可以在这里阅读更多关于为什么它的行为如下:http://devhawk.net/2009/08/06/I+Hate+Globalasax.aspx – 2011-01-30 23:12:00