事件处理程序只能在IHttpModule初始化期间绑定到HttpApplication事件

Zoh*_*aib 6 asp.net httpmodule global-asax

我收到以下错误

'事件处理程序只能在IHttpModule初始化期间绑定到HttpApplication事件.在以下代码中(粗体或双线**)

protected void Application_BeginRequest(object sender, EventArgs e)
{
    HttpApplication app = (HttpApplication)sender;
    **app.EndRequest += new EventHandler(Application_EndRequest);**        
}

protected void Application_EndRequest(object sender, EventArgs e)
{
    UnitOfWork.Commit();
}
Run Code Online (Sandbox Code Playgroud)

在Global.asax文件中提到.有人可以弄清楚,我缺少的地方吗?谢谢.

Mel*_*igy 7

事件处理程序存在于应用程序的整个生命周期中,因此,您只需添加一次,而不是每次请求都添加它.事件本身将触发每个请求,每次引发事件时都会调用唯一的处理程序.

将它添加到global.asax中的Application_Start而不是Application_BeginRequest,或者更好的是,创建一个HTTP模块.

另外,我认为您甚至可能不需要事件处理程序.具有当前名称的方法将按类似于Page/Control AutoEventWireup(如Page_Load)的约定调用.请注意,有些人报告说,这可能会在ASP.NET MVC应用程序中出现问题.所以,我的建议是重命名函数,在Application_Start中添加事件处理程序,或者更好地在您创建的新HTTP模块中.

  • 谢谢你的帮助.无需绑定Application_EndRequest.这种方法是自动绑定. (2认同)