在global.asax中使用PreSendRequestHeaders事件

Chr*_*ris 8 c# asp.net iis global-asax

我尝试在"Application_Start"方法中的global.asax文件中分配PreSendRequestHeaders事件.但这不起作用.

private void Application_Start()
{
    PreSendRequestHeaders += OnPreSendRequestHeaders;           
}

private void OnPreSendRequestHeaders(object sender, EventArgs e)
{
   // this is not called
}
Run Code Online (Sandbox Code Playgroud)

没有调用OnPreSendRequestHeaders,为什么?是否可以在global.asax中分配PreSendRequestHeaders方法?

pkl*_*ski 8

只需使用:

protected void Application_PreSendRequestHeaders(Object source, EventArgs e)
{

}
Run Code Online (Sandbox Code Playgroud)

或者实例化处理程序:

protected void Application_Start()
{
    PreSendRequestHeaders += new EventHandler(OnPreSendRequestHeaders);
}

protected void OnPreSendRequestHeaders(object sender, EventArgs e)
{
    // should work now
}
Run Code Online (Sandbox Code Playgroud)

  • 第一个适合我,但第二个不适合(正如@Chris的初始问题所说) (4认同)
  • **永远不要**在 Application_Start 中连接事件处理程序。ASP.NET 创建 Global 类的多个实例,以便可以同时处理多个 HTTP 请求,但仅为其中一个实例调用 Application_Start。这意味着您的事件处理程序仅对其中一个全局实例有效,而不是对所有实例有效。 (2认同)