【发布时间】:2011-02-20 23:19:32
【问题描述】:
我在尝试在 web.config 中映射 HttpHandler 时遇到问题。
这是相关的配置位:
<httpHandlers>
<add verb="*" path="*.hndlr" type="MyAssembly.MyHandler, MyAssembly" validate="false" />
</httpHandlers>
当我导航到 http://localhost/myApp/whatever.hndlr 时,我收到服务器错误 404(未找到)。
这是我第一次连接 HttpHandler,所以我可能会遗漏一些东西 - 感谢任何帮助!
更新:
到目前为止,我设法使用这两个答案让它工作 - 谁能解释它为什么工作得到标记的答案!
这是我的配置(如果两者都没有,则无法使用 - 我在经典模式下运行 IIS7)
System.web:
<httpHandlers>
<add verb="*" path="*MyHandler.hndlr" type="MyAssembly.MyAssemblyHandler, MyAssembly" validate="false"/>
</httpHandlers>
System.webserver:
<handlers>
<add name="MyHandler" verb="*" path="*MyHandler.hndlr" type="MyAssembly.MyAssemblyHandler, MyAssembly" validate="false" modules="IsapiModule" scriptProcessor="C:\Windows\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" resourceType="Unspecified" requireAccess="Script"/>
</handlers>
【问题讨论】:
-
进一步更新,如果您使用的是 IIS6,则放入 System.webserver 部分的任何内容都将被忽略,因为这仅在 IIS7 集成管道模式下使用。拥有两者的唯一原因是拥有一个对 IIS7 流水线和 calssic 模式以及 IIS6 有效的 web.config。
-
对不起,它是 IIS7 - 但这会改变事情吗?如果我删除 system.webserver 部分中的位,它就不起作用(找不到 404)并且出于兼容性原因我们处于经典模式。
-
如果我在 system.web 中注释掉那个,我会得到“无法执行 URL”——出于某种有趣的原因,它只适用于两者! :)
-
您的更新是一个救生员...非常感谢!
-
validate不再允许在system.webServer中使用
标签: asp.net configuration httphandler web-config