Tôi đang cố gắng thực hiện một số hành động vào cuối mỗi yêu cầu. Tôi đã thay đổi Application_Start() được tạo ra khi tạo dự án mới để thực hiện một thử nghiệm:ASP.NET MVC không gọi global.asax 'EndRequest
protected void Application_Start()
{
EndRequest += (s, e) =>
{
Console.Write("fghfgh");
};
RegisterRoutes(RouteTable.Routes);
}
Lambda sẽ không được gọi. Bất kỳ ý tưởng tại sao?
chỉnh sửa: Tôi thấy rằng họ đang làm điều tương tự trong SharpArch [http://code.google.com/p/sharp-architecture/] và nó hoạt động ở đó ... Và không, tôi không muốn sử dụng HttpModule.
edit2: Cách giải quyết duy nhất tôi thấy là sử dụng Application_EndRequest trong conjuction với một thành viên tĩnh riêng tư của 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 phải tin bởi vì nó có vẻ như Application_EndRequest đang được gọi là sử dụng khác nhau đối tượng thể hiện (điều này). Đó cũng có thể là lý do cho sự kiện của tôi (như được mô tả ở đầu) không được gọi.
u shoudl chấp nhận câu trả lời cho số – Simon
Bạn có thể đọc thêm về lý do tại sao nó hoạt động như thế này tại đây: http://devhawk.net/2009/08/06/I+Hate+Globalasax.aspx –