2010-01-26 35 views
6

我查看了一些较旧的问题,但找不到任何东西。通配符HttpHandler无法处理静态文件

我有一个通配符的HttpHandler我的web应用程序,其正在处理的URL和工作,如果它可以用它做

任何东西,如果不能,那么StaticFile处理程序应该把它捡起来,只是它服务作为一个静态文件(如HTML文件)。

问题是,它是通过通配符处理程序,然后看似不去StaticFileHander。有什么我需要做的通配符处理程序,或在网络配置?

这是我的web.config:

<add name="Wildcard" path="*" verb="*" type="Rewriter.RewriterHttpModule" 
modules="IsapiModule" requireAccess="None" allowPathInfo="false" 
preCondition="" responseBufferLimit="4194304" /> 

<add name="StaticFile" path="*.*" verb="*" 
modules="StaticFileModule,DefaultDocumentModule,DirectoryListingModule" 
scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" 
resourceType="File" requireAccess="Read" allowPathInfo="false" preCondition="" 
responseBufferLimit="4194304" /> 
+1

告诉我们您的IIS设置。如果IIS没有把请求交给ASP.NET,你的web.config根本就不重要。 – Bryan 2010-01-27 00:08:58

+0

我没有改变任何东西,特别是在IIS7中,它只是*标准*设置。它运行在默认应用程序池,虽然 – Paul 2010-01-27 07:43:40

回答

3

也许你的HttpHandler应该明确地通关的请求StaticFileHandler。

+0

是的,这就是我的想法,但你怎么做到这一点? StaticFileHandler是一个内部类,所以我不能在Handler的末尾使用它,并且不能将它添加到web.config中,因为如果它被ReWriteHandler拾取,那么它不会移动到下一个... – Paul 2010-01-27 18:50:48

+0

尝试给静态处理程序一个路径,只是重定向()从它RewriteHandler – hunter 2010-01-27 19:14:37

3

要跟进什么亨特说,是的,也许将此条目添加到你的web.config后的第一个通配符映射:

<add verb="*" path="*" type="System.Web.StaticFileHandler" /> 

只是一个想法。没有测试过这个或任何东西。

2

检查应用程序池管道模式。如果是Classic,则必须在<httpHandlers>部分中配置处理程序。如果它是集成的,则应使用web.config中的<handlers>部分。