2009-08-26 84 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>