Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net HTTPModule每页只调用一次_Asp.net_Iis_Httpmodule - Fatal编程技术网

Asp.net HTTPModule每页只调用一次

Asp.net HTTPModule每页只调用一次,asp.net,iis,httpmodule,Asp.net,Iis,Httpmodule,我正在尝试为ASP.NET实现一个自定义的HTTPModule。我有一个非常简单的html页面,其中有一个图像和一个HTTPModule,它钩住了BeginRequest事件。当我使用VisualStudio的devWeb服务器进行调试时,我的模块会被调用两次:一次用于初始页面请求,另一次用于图像请求。这是我所期望的。但是,当我将应用程序部署到IIS时,页面请求只调用一次模块。我不明白为什么。有什么想法吗?谢谢。首先要检查的是:是否有人联系服务器获取图像?它在客户端缓存中吗 要检查的第二件事:它

我正在尝试为ASP.NET实现一个自定义的HTTPModule。我有一个非常简单的html页面,其中有一个图像和一个HTTPModule,它钩住了BeginRequest事件。当我使用VisualStudio的devWeb服务器进行调试时,我的模块会被调用两次:一次用于初始页面请求,另一次用于图像请求。这是我所期望的。但是,当我将应用程序部署到IIS时,页面请求只调用一次模块。我不明白为什么。有什么想法吗?谢谢。

首先要检查的是:是否有人联系服务器获取图像?它在客户端缓存中吗

要检查的第二件事:它是否正在服务器端缓存


尝试直接在浏览器中加载图像本身的URL。。。可能会在末尾添加类似于
?foo=bar
的内容,以执行一些基本的缓存破坏。

首先要检查的是:是否确实正在联系服务器以获取映像?它在客户端缓存中吗

要检查的第二件事:它是否正在服务器端缓存


尝试直接在浏览器中加载图像本身的URL。。。可能会在末尾添加类似于
?foo=bar
的内容来执行一些基本的缓存破坏。

我猜您正在使用IIS6或IIS7的经典托管管道模式。在这种情况下,您的ASP.NET应用程序只会接收不正确的请求。通常,这些请求包括具有以下扩展名的请求:
aspx
ashx
asmx
。。。查看更多信息

对其他扩展的请求由IIS直接处理,因此它们永远不会到达您的HTTP模块(作为ISAPI扩展的一部分运行)

在IIS7和更高版本中,Microsoft已将管道集成到IIS中。这意味着所有请求都将沿着整个ASP.NET管道传递


另一种可能性是,正如Jon所建议的那样,您的图像被缓存在某个地方。

我猜您正在使用IIS6或IIS7的经典托管管道模式。在这种情况下,您的ASP.NET应用程序只会接收不正确的请求。通常,这些请求包括具有以下扩展名的请求:
aspx
ashx
asmx
。。。查看更多信息

对其他扩展的请求由IIS直接处理,因此它们永远不会到达您的HTTP模块(作为ISAPI扩展的一部分运行)

在IIS7和更高版本中,Microsoft已将管道集成到IIS中。这意味着所有请求都将沿着整个ASP.NET管道传递


另一种可能是,正如Jon所建议的,您的图像被缓存在某个地方。

是的,已联系服务器。我做了一次页面刷新,让Fiddler打开并查看请求的执行情况。我直接点击了图像,它仍然没有调用自定义模块。我尝试了?foo=bar和no dice-我甚至还重置了IIS。正如Jon所建议的,请在调用Web服务器之前尝试清除缓存。是的,已联系服务器。我做了一次页面刷新,让Fiddler打开并查看请求的执行情况。我直接点击了图像,它仍然没有调用自定义模块。我尝试了?foo=条,没有骰子-我甚至做了IIS重置。正如Jon所建议的,在调用Web服务器之前,请尝试清除缓存。@skazzaks:进一步清除:您的开发计算机正在运行Cassini或IIS7集成模式,而您的生产服务器正在运行IIS6或IIS7经典模式。@skazzaks:进一步清除:您的开发计算机正在运行Cassini或IIS7集成模式,并且您的生产服务器为IIS6或IIS7经典模式。如果以下任何答案正确,请将其标记为已回答。如果以下任何答案正确,请将其标记为已回答?