在asp.net中多次调用Application_EndRequest(对象发送者,EventArgs e)

Sre*_*ree 1 asp.net web-applications

在我的应用程序中,我正在定义一个实现ihttpmodule的类,它包含以下方法

  public void Init(HttpApplication application)
    {
        application.EndRequest += new EventHandler(Application_EndRequest);
    }


 private void Application_EndRequest(object sender, EventArgs e)
    {
        HttpApplication application = (HttpApplication)sender;
        HttpContext context = application.Context;


        IObjectContainer objectClient = context.Items[KEY_DB4O_CLIENT] as IObjectContainer;

        if (objectClient != null)
        {
            objectClient.Close();
        }

        objectClient = null;
        context.Items[KEY_DB4O_CLIENT] = null;
    }
Run Code Online (Sandbox Code Playgroud)

当我尝试运行应用程序并进行调试时,我注意到一件奇怪的事情:

在chrome private void Application_EndRequest(对象发送者,EventArgs e)在应用程序启动时执行3次,在应用程序结束时再执行3次.

在Internet Explorer中私有void Application_EndRequest(对象发送者,EventArgs e)在应用程序启动时执行2次,在应用程序结束时再执行2次.

为什么Application_EndRequest会多次执行.它不应该只运行一次吗?

而且我想知道Visual Studio开发Web服务器和IIS之间的区别?

我和两个人之间有什么区别.

请帮我

谢谢你的期待

And*_*ber 12

Application_EndRequest()将被调用多次,因为运行时处理请求.使用VSDev服务器,这将是每个请求; 包括图像和浏览器可能寻找的其他各种资源......例如书签图标图像.

这也可以解释浏览器之间的差异; IE和Chrome可能会在他们尝试请求的额外内容方面存在差异,尤其是re:网站图标.