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

时间:2011-04-15 08:38:16

标签: 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;
    }

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

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

Internet Explorer中的

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

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

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

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

请帮帮我

感谢您的期待

1 个答案:

答案 0 :(得分:12)

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

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