2012-11-30 70 views
3

我在ASP NET 4得到以下錯誤:有潛在危險的請求在asp.net 4

A potentially dangerous Request.Path value was detected from the client (<). 

我已閱讀,我需要在我的web.config使用requestValidationMode =「2.0」:

<system.web> 
    <compilation debug="true" targetFramework="4.0" /> 
    <httpRuntime requestValidationMode="2.0" /> 
</system.web> 

所以,我的方法是這樣的:

[ValidateInput(false)] 
public ActionResult Search(string query, string type){ 

//method body 

return result; 
} 

它的偉大工程。但是,我無法修改我的Web.config文件,因爲許多其他應用程序依賴於此文件,並且可能會在其他位置導致安全漏洞或錯誤。

我的應用程序足夠安全,可以接受特殊字符,但我無法對正在開發的系統的其餘部分說同樣的話。 是否有替代方法接受特殊字符作爲我的方法中的輸入?

例子:

www.mydomain.com/search/query/<myquery<ffoo/type/dept 
+0

可能複製http://stackoverflow.com/questions/4361907/asp-net-mvc-3-validaterequestfalse-not-working-with-formcollection – Kath

回答

1

我在當前project..I同樣的問題會發布什麼,我不得不爲了糾正這種添加..也請記住,有一個錯誤.NET 4.0在哪裏使用.Net 2.0工作我的項目是3.5但是我認爲IIS AppPool他們有我們的項目運行4.0

我在我的網絡配置文件中添加了這個,它糾正了奇怪的錯誤,我是體驗

<httpRuntime requestValidationMode="2.0" 
    requestPathInvalidCharacters="*,:,&amp;,\" 
    relaxedUrlToFileSystemMapping="true" 
/> 

爲MVC,你可以試試下面的

using System.Web.Helpers; 

[HttpPost] 
[ValidateInput(false)] 
public ViewResult Edit(ContentTemplateView contentTemplateView) 
{ 
    FormCollection collection = new FormCollection(Request.Unvalidated().Form);