【问题标题】:How can Request Validation be disabled for HttpHandlers?如何为 HttpHandlers 禁用请求验证?
【发布时间】:2010-11-22 21:00:48
【问题描述】:

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

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

如果我创建一个物理 ASPX 页面并在标头中设置 ValidateRequest=false,并将相同的代码放在 Page_Load 方法中,则调用该代码没有任何问题。

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

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

【问题讨论】:

  • 我也有同样的问题。我需要在 IIS7 中为我的 Http 处理程序禁用请求验证。

标签: asp.net request httphandler validation


【解决方案1】:

这很容易。更改以下 sn-p 以匹配处理程序路径并添加到您的 web.config 中:

<configuration>
  ....
  <location path="YOUR HANDLER PATH" allowOverride="true">
    <system.web>
      <httpRuntime requestValidationMode="2.0" />
      <pages validateRequest="false" />
    </system.web>
  </location>
</configuration>

【讨论】:

    【解决方案2】:

    对于 IIS7,我们一直在 web.config 中添加/修改以下键

    http://www.asp.net/learn/whitepapers/aspnet4/breaking-changes#0.1__Toc256770147

    【讨论】:

      【解决方案3】:

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

      <add path="handler.axd" type="Foo.Bar.MyHandler" verb="*" validate="false" />
      

      如果有人能阐明如何在 IIS7 的集成模式下实现这一点,那也将非常有帮助。

      【讨论】:

      • 元素中的“validate”属性与输入验证无关。它只是控制 IIS 是否尝试抢先加载处理程序类
      猜你喜欢
      • 1970-01-01
      • 2011-12-15
      • 1970-01-01
      • 2013-10-17
      • 2021-12-02
      • 1970-01-01
      • 2017-03-12
      • 2020-03-11
      • 2021-10-26
      相关资源
      最近更新 更多