我继承了使用框架4.0的MVC asp.net应用程序。
我得到“从客户端检测到有潜在危险的Request.Form值”可怕的错误,我所有的研究使我相信,这应该修复它:
<system.web>
<httpRuntime requestValidationMode="2.0" />
<pages validateRequest="false" />
</system.web>
不过,我补充说,我的web.config并仍然得到错误。 我在这里我的绳子结束,我缺少什么?
除了你做了什么你也有装饰用你的方法ValidateInput
属性。
[ValidateInput(false)]
public ActionResult MyActionMethod(string myParameter)
{
// Method implementation goes here...
}
有一种替代不过,你可以实现自己的请求,验证并绑定在你的web.config,如果你想处理验证整个网站。 看看这个博客帖子就如何充分实现它。
基本上,创建从继承的类RequestValidator
然后把它挂在web.config中。
<httpRuntime requestValidationType=”Globals.CustomRequestValidation”/>
希望这有助于!
采用另一种方法。 在httpRuntime
,指向您的自定义验证类。 这样,有超过传入的请求完全控制,验证器在每个单独的请求发射,在处理管道的开始。
特别是,如果你实现你的验证,返回true
,你会无条件接受所有传入的请求。
http://msdn.microsoft.com/en-us/library/system.web.util.requestvalidator.aspx
最简单的方法是从验证系统中删除你想要的字符。
这里是requestPathInvalidCharacters
从属性httpRuntime
元素与它的默认值。
<httpRuntime requestPathInvalidCharacters="<,>,*,%,&,:,\" />
<!-- the unescaped characters are: < > * % & : \ -->
删除你要授权的字符,该请求将正常工作。