如何为HttpHandlers禁用请求验证?

时间:2009-08-26 04:56:27

标签: asp.net request httphandler validation

是否可以禁用HttpHandlers的请求验证?

一些背景知识 - 我有一个使用HttpHandler的ASP.NET Web应用程序来接收来自WorldPay的付款响应。 IIS日志显示从WorldPay正确调用处理程序,但从不调用处理程序内的代码。

如果我创建一个物理ASPX页面并在标题中设置 ValidateRequest = false ,并在Page_Load方法中放入相同的代码,则会毫无问题地调用代码。

这解决了这个问题,虽然我更喜欢坚持使用HttpHandler,因为它更适合这种类型的功能,而不是拥有一个空的ASPX页面,尽管这取决于是否能够禁用请求验证

Web应用程序使用的是ASP.NET 2.0,服务器是IIS6。

3 个答案:

答案 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的集成模式中阐明如何实现这一点,那么它也会非常有用。