我使用框架4.0继承了MVC asp.net应用程序。
我遇到了可怕的“从客户端检测到一个潜在危险的Request.Form值”错误,我的所有研究都让我相信这应该解决它:
<system.web>
<httpRuntime requestValidationMode="2.0" />
<pages validateRequest="false" />
</system.web>
但是,我已将其添加到我的web.config并仍然收到错误。我在这里的绳子尽头,我错过了什么?
答案 0 :(得分: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”/>
希望这有帮助!
答案 1 :(得分:0)
采取另一种方法。在httpRuntime
中,指向自定义验证类。这种方式可以完全控制传入的请求,因为在处理管道的开头,每个请求都会触发验证器。
特别是,如果您实施验证程序以返回true
,您将无条件接受所有传入请求。
http://msdn.microsoft.com/en-us/library/system.web.util.requestvalidator.aspx
答案 2 :(得分:0)
最简单的方法是从验证系统中删除您想要的字符。
以下是httpRuntime
element的requestPathInvalidCharacters
属性及其默认值。
<httpRuntime requestPathInvalidCharacters="<,>,*,%,&,:,\" />
<!-- the unescaped characters are: < > * % & : \ -->
删除您要授权的字符,请求将起作用。