Iis 7 使用自定义HttpHandler处理IIS7中的.aspx和非扩展页请求时出现问题

Iis 7 使用自定义HttpHandler处理IIS7中的.aspx和非扩展页请求时出现问题,iis-7,httphandler,integrated-pipeline-mode,wildcard-mapping,staticfilehandler,Iis 7,Httphandler,Integrated Pipeline Mode,Wildcard Mapping,Staticfilehandler,我正在尝试使用IIS7中的自定义HttpHandler处理“.aspx”和非扩展页请求(即contact.aspx和/contact/)。我的处理程序在任何一种情况下都可以正常工作,但只要我尝试处理这两种情况,它只对一种情况有效。请参见下面my web.config中的处理程序代码段: 如果我只保留到“*.aspx”的映射,则所有.aspx请求都会得到正确处理,但无扩展请求显然无法工作: <add name="AllPages.ASPX" path="*.aspx" verb="*" ty

我正在尝试使用IIS7中的自定义HttpHandler处理“.aspx”和非扩展页请求(即contact.aspx和/contact/)。我的处理程序在任何一种情况下都可以正常工作,但只要我尝试处理这两种情况,它只对一种情况有效。请参见下面my web.config中的处理程序代码段:

如果我只保留到“*.aspx”的映射,则所有.aspx请求都会得到正确处理,但无扩展请求显然无法工作:

<add name="AllPages.ASPX" path="*.aspx" verb="*" type="Test.PageHandlerFactory, Test" preCondition="" />

如果我将映射更改为“*”,则所有无扩展请求都会得到正确处理,但仍应由此处理程序处理的“.aspx”请求将停止工作。注意,我添加了StaticFiles条目,以便处理磁盘上的文件,如图像、css、js等

<add name="WebResource" path="WebResource.axd" verb="GET" type="System.Web.Handlers.AssemblyResourceLoader" />
<add name="StaticFiles" verb="GET,HEAD" path="*.*" type="System.Web.StaticFileHandler" resourceType="File" />
<add name="AllPages" path="*" verb="*" type="Test.PageHandlerFactory, Test" preCondition="" />

疯狂的是,当我加载一个“.aspx”请求(显示第二个配置)时,IIS7给出了一个404未找到错误。该错误还表示请求由StaticFiles处理程序处理。但是为了避免这种情况,我确保将resourceType=“File”添加到StaticFileHandler中。根据微软的说法,这意味着请求只针对“磁盘上的物理文件”。我是否误读/解释了“磁盘上”部分


我的.aspx文件不在磁盘上,这就是为什么我首先要使用处理程序。

第二个配置将导致*.aspx由
StaticFileHandler处理,因为文件确实存在,所以它们满足处理程序的条件。但是,处理程序配置为不提供这些文件,而是生成404消息

更好的解决方案是使用HttpModule实现,例如重写页面或处理程序的虚拟路径