2009-08-26 70 views
12

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

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

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

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

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

+0

我有完全相同的问题。我需要在IIS7中禁用我的Http处理程序的请求验证。 – krisdyson 2012-07-04 11:20:08

回答

-2

在IIS6上,您可以简单地在web.config注册中添加validate="false"

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

如果任何人都可以阐明如何在IIS7的集成模式下做到这一点一些轻,这将是非常有帮助了。

+2

元素中的“validate”属性与输入验证无关。它只是控制IIS是否试图预先加载处理程序类 – 2011-02-01 14:20:00

5

还是比较方便的。更改以下片段以匹配处理程序路径并添加到您的web.config中:

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