我使用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文件。
答案 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" />