是否有可能禁用请求验证的HttpHandlers的?
一点背景 - 我有使用一个HttpHandler接收来自WorldPay的支付响应ASP.NET Web应用程序。 IIS日志表明该处理器正在从WorldPay的正确调用,但处理程序中的代码不会被调用。
如果我创建一个物理ASPX页面,并设置ValidateRequest =在头假的 ,并把相同的代码在Page_Load方法中,代码被称为没有任何问题。
这解决了这个问题,但我更愿意坚持使用一个HttpHandler这个,因为它是更适合这种类型的功能,而不是一个空的ASPX页面,虽然这是依赖于能够禁用请求验证。
Web应用程序使用ASP.NET 2.0和服务器是IIS6。
在IIS6,你可以简单地添加validate="false"
在web.config中注册。
<add path="handler.axd" type="Foo.Bar.MyHandler" verb="*" validate="false" />
如果任何人都可以阐明如何在IIS7的集成模式下做到这一点一些轻,这将是非常有帮助了。
这是很容易的。 更改以下片段相匹配的处理程序路径,并添加你的web.config:
<configuration>
....
<location path="YOUR HANDLER PATH" allowOverride="true">
<system.web>
<httpRuntime requestValidationMode="2.0" />
<pages validateRequest="false" />
</system.web>
</location>
</configuration>
对于IIS7我们一直在添加/修改web.config中的下列关键
看到http://www.asp.net/learn/whitepapers/aspnet4/breaking-changes#0.1__Toc256770147