我收到ValidateInputIfRequiredByConfig()引起的随机异常。
我没有确切的消息,因为我们的服务器是pt-BR,因此会翻译错误消息。
我知道如果用户将恶意代码放入输入中,例如,可能会抛出此错误。但这不是个案。
我正在收到这个,请求一些图片。以下来自elmah的一些信息。
HTTP_USER_AGENT: GbPlugin
PATH_INFO: /Content/images/BannerWelcome.jpg?1110311762734
PATH_TRANSLATED: C:\inetpub\wwwroot\Content\images\BannerWelcome.jpg?1110311762734
REQUEST_METHOD: GET
SCRIPT_NAME: /Content/images/BannerWelcome.jpg?1110311762734
应用程序是ASP.NET MVC 3,在Windows 2008,IIS 7.5上运行
修改
pt-BR中的异常消息:
System.Web.HttpException
Um valor possivelmente perigoso Request.Path foi detectado no cliente (?).
System.Web.HttpException (0x80004005): Um valor possivelmente perigoso Request.Path foi detectado no cliente (?).
em System.Web.HttpRequest.ValidateInputIfRequiredByConfig()
em System.Web.HttpApplication.PipelineStepManager.ValidateHelper(HttpContext context)
修改
英文异常消息:“从客户端Request.Path检测到潜在危险值”
编辑2:
我无法重现此错误。据我所知,这只是对这张图片的要求。
答案 0 :(得分:4)
<pages validateRequest="false" />
在MVC3中不起作用。
1)您必须在每个控制器或操作
上明确放置[ValidateRequest(false)]2)如果你使用.NET4,这还不够,因为.NET4中有一个“bug / feature”阻止[ValidateInput(false)]工作。 您还必须使用requestValidationMode 2.0禁用requestPathInvalidCharacters,validateRequest和requestFiltering:
<httpRuntime requestValidationMode="2.0" requestPathInvalidCharacters="" />
答案 1 :(得分:2)
我做了三处修改来解决这个问题:
1)
<system.web>
<httpRuntime requestValidationMode="2.0" requestPathInvalidCharacters="" />
</system.web>
2)
<system.webServer>
<security> <requestFiltering allowDoubleEscaping="true" /> </security>
</system.webServer>
3)<pages validateRequest="false" />