-->

和 不工作( and

2019-09-21 23:31发布

我继承了使用框架4.0的MVC asp.net应用程序。

我得到“从客户端检测到有潜在危险的Request.Form值”可怕的错误,我所有的研究使我相信,这应该修复它:

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

不过,我补充说,我的web.config并仍然得到错误。 我在这里我的绳子结束,我缺少什么?

Answer 1:

除了你做了什么你也有装饰用你的方法ValidateInput属性。

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

有一种替代不过,你可以实现自己的请求,验证并绑定在你的web.config,如果你想处理验证整个网站。 看看这个博客帖子就如何充分实现它。

基本上,创建从继承的类RequestValidator然后把它挂在web.config中。

<httpRuntime requestValidationType=”Globals.CustomRequestValidation”/>

希望这有助于!



Answer 2:

采用另一种方法。 在httpRuntime ,指向您的自定义验证类。 这样,有超过传入的请求完全控制,验证器在每个单独的请求发射,在处理管道的开始。

特别是,如果你实现你的验证,返回true ,你会无条件接受所有传入的请求。

http://msdn.microsoft.com/en-us/library/system.web.util.requestvalidator.aspx



Answer 3:

最简单的方法是从验证系统中删除你想要的字符。

这里是requestPathInvalidCharacters从属性httpRuntime元素与它的默认值。

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

删除你要授权的字符,该请求将正常工作。



文章来源: and not working