如何为HttpHandlers禁用请求验证?

Mun*_*Mun 13 asp.net validation httphandler request

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

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

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

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

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

gia*_*min 7

这很容易.更改以下代码段以匹配处理程序路径并添加到web.config中:

<configuration>
  ....
  <location path="YOUR HANDLER PATH" allowOverride="true">
    <system.web>
      <httpRuntime requestValidationMode="2.0" />
      <pages validateRequest="false" />
    </system.web>
  </location>
</configuration>
Run Code Online (Sandbox Code Playgroud)


luk*_*fer -2

在 IIS6 上,您只需validate="false"在 web.config 中添加注册即可。

<add path="handler.axd" type="Foo.Bar.MyHandler" verb="*" validate="false" />
Run Code Online (Sandbox Code Playgroud)

如果有人能够阐明如何在 IIS7 的集成模式中完成此任务,那也会非常有帮助。

  • &lt;add /&gt; 元素中的“validate”属性与输入验证无关。它只是控制 IIS 是否尝试抢先加载处理程序类 (2认同)