我试图要处理的两个".aspx"和不扩页的请求(即两个接触。aspx和/接触/)使用一个自定义HttpHandler在IIS7.我的处理程序的工作只是现在无论哪一种情况或其他,但是只要我尝试处理这两种情况下,它只能作为一个。请处理程序段从我的网页。配置如下:

如果我只保留映为"*.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"请求(与第2配置所示)IIS7给404未发现的误差。错误也说,请求的处理是通过StaticFiles处理程序。但是我一定要增加资源类型="文件"的StaticFileHandler为了避免这种情况。根据MS这意味着该请求只是"物理上的文件的磁盘"。我误读/解释"磁盘上"的一部分?

我的。aspx文件不是在磁盘上,这就是为什么我要采用的处理程序在第一位。

有帮助吗?

解决方案

2配置将导致*.aspx得到处理的 StaticFileHandler 因为该文件的确存在,使他们满足的标准处理程序。然而,处理程序的配置不提供这些文件,并产生了404消息代替。

一个更好的解决办法是使用一个HttpModule执行诸如 URL重写模块 重写虚拟的路径的网页或处理程序。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top