2012-08-30 65 views
0

我已經繼承了使用框架4.0的MVC asp.net應用程序。<pages validateRequest =「false」/>和<httpRuntime requestValidationMode =「2.0」/>不起作用

我越來越可怕的「有潛在危險的Request.Form值從客戶端檢測到」錯誤和我所有的研究使我相信,這應該修復它:

<system.web> 
    <httpRuntime requestValidationMode="2.0" /> 
    <pages validateRequest="false" /> 
</system.web> 

不過,我已經添加到我的web.config並仍然出現錯誤。我在這裏結束了我的繩索,我錯過了什麼?

回答

1

除了你做了什麼你也有裝飾與ValidateInput屬性的方法。

[ValidateInput(false)] 
public ActionResult MyActionMethod(string myParameter) 
{ 
    // Method implementation goes here... 
} 

有一個替代不過,你可以實現自己的請求,驗證並綁定在你的web.config,如果你想處理驗證整個網站。看看this blog post關於如何完全實現它。

基本上,創建一個繼承自RequestValidator的類,然後將其掛接到web.config上。

<httpRuntime requestValidationType=」Globals.CustomRequestValidation」/> 

希望這有助於!

0

最簡單的方法是從驗證系統中刪除所需的字符。

以下是httpRuntime element中的requestPathInvalidCharacters屬性及其默認值。

<httpRuntime requestPathInvalidCharacters="&lt;,&gt;,*,%,&amp;,:,\" /> 
<!-- the unescaped characters are: < > * % & : \ --> 

刪除您要授權的字符並且請求將起作用。

相關問題