使用httphandler在ASP.Net中使用404

时间:2013-04-17 09:02:54

标签: asp.net iis-7 httphandler

我使用httphandler将浏览器Urls重新映射到我网站中的文件。这工作正常,但我无法访问我在新目录下创建的文件。网址如下所示:

http://mobile.mysite.com/monitoring/help/help.aspx

然而,404错误中返回的信息显示它无法在以下位置找到该文件:

D:\Sites\Website\monitoring\help\help.aspx

然而该文件确实位于:

D:\Sites\Website\mobile\monitoring\help\help.aspx

我的http处理程序通常会识别“移动”子域。事实上,如果我放弃实际文件并只使用目录,我的处理程序就会被调用。即使我在我的代码中放置断点,VS也永远不会被调用。为什么IIS在不存在的目录下访问help.aspx?为什么我的httphandler不被调用。正如我所提到的,httphandler确实适用于几乎所有其他文件。我可以调用位于其他域下的aspx文件。

这是我的处理程序在web.config文件中的显示方式:

<add name="FileServerHandler-Files" path="*.*" verb="*" type="FileServerHandler" modules="ManagedPipelineHandler" scriptProcessor="" resourceType="Either" requireAccess="Read" allowPathInfo="false" preCondition="" responseBufferLimit="4194304" />

在IIS7上运行ASP.NET 4.0

子域“mobile”实际上映射到与主站点相同的IP地址。这与它有关吗?如果是这样,它不能解释为什么处理程序可以访问移动域下的文件夹而不能访问aspx文件。

1 个答案:

答案 0 :(得分:0)

虽然我在web.config中有一个用于处理目录的处理程序的条目,但我尝试在列表中将其移动。这很有效。为什么它停止工作是一个谜,因为web.config很长一段时间没有改变。这是条目现在的样子:

    <add name="FileServerHandler-Dir" path="*" verb="*" type="FileServerHandler" modules="ManagedPipelineHandler" scriptProcessor="" resourceType="Unspecified" requireAccess="Read" allowPathInfo="false" preCondition="" responseBufferLimit="4194304" />
    <add name="FileServerHandler-Files" path="*.*" verb="*" type="FileServerHandler" modules="ManagedPipelineHandler" scriptProcessor="" resourceType="Either" requireAccess="Read" allowPathInfo="false" preCondition="" responseBufferLimit="4194304" />