是否可以禁用HttpHandlers的请求验证?
一些背景知识 - 我有一个使用HttpHandler的ASP.NET Web应用程序来接收来自WorldPay的付款响应。 IIS日志显示从WorldPay正确调用处理程序,但从不调用处理程序内的代码。
如果我创建一个物理ASPX页面并在标题中设置 ValidateRequest = false ,并在Page_Load方法中放入相同的代码,则会毫无问题地调用代码。
这解决了这个问题,虽然我更喜欢坚持使用HttpHandler,因为它更适合这种类型的功能,而不是拥有一个空的ASPX页面,尽管这取决于是否能够禁用请求验证
Web应用程序使用的是ASP.NET 2.0,服务器是IIS6。
答案 0 :(得分:6)
这很容易。更改以下代码段以匹配处理程序路径并添加到web.config中:
<configuration>
....
<location path="YOUR HANDLER PATH" allowOverride="true">
<system.web>
<httpRuntime requestValidationMode="2.0" />
<pages validateRequest="false" />
</system.web>
</location>
</configuration>
答案 1 :(得分:2)
对于IIS7,我们一直在web.config中添加/修改以下密钥
请参阅http://www.asp.net/learn/whitepapers/aspnet4/breaking-changes#0.1__Toc256770147
答案 2 :(得分:-2)
在IIS6上,您只需在web.config注册中添加validate="false"
即可。
<add path="handler.axd" type="Foo.Bar.MyHandler" verb="*" validate="false" />
如果有人能够在IIS7的集成模式中阐明如何实现这一点,那么它也会非常有用。