在我的应用程序中,我正在定义一个实现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之间的区别吗?
我和两个人之间有什么区别。
请帮帮我
感谢您的期待
答案 0 :(得分:12)
Application_EndRequest()
将被调用多次,因为运行时会处理请求。使用VSDev服务器,这将是每个请求;包括图像和浏览器可能寻找的其他各种资源......例如书签图标图像。
这也可以解释浏览器之间的差异; IE和Chrome可能会在他们尝试请求的额外内容方面存在差异,尤其是re:网站图标。