Próbuję wykonać pewne czynności na końcu każdego żądania. Zmieniłem Application_Start(), które są generowane podczas tworzenia nowego projektu, aby wykonać test:ASP.NET MVC nie wywołuje metody global.asax "EndRequest
protected void Application_Start()
{
EndRequest += (s, e) =>
{
Console.Write("fghfgh");
};
RegisterRoutes(RouteTable.Routes);
}
lambda nie zostanie wywołana. Jakieś pomysły, dlaczego?
edit: widzę, że robią coś podobnego w SharpArch [http://code.google.com/p/sharp-architecture/] i działa tam ... I nie, nie chcę użyć HttpModule.
Edit2: Jedyne obejście znalazłem jest użycie Application_EndRequest w połączeniu z prywatnym statycznej członek 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 musi być prywatny, ponieważ wydaje się, że Application_EndRequest jest wywoływana przy użyciu różnych obiekt instancji (this). To może być również powodem, dla którego moje wydarzenie (jak opisano na początku) nie zostało wywołane.
u shoudl zaakceptuj odpowiedź na to pytanie – Simon
Możesz przeczytać więcej o tym, dlaczego działa tak: http://devhawk.net/2009/08/06/I+Hate+Globalasax.aspx –