ValidateInput属性似乎不适用于ASP.NET MVC

JC *_*bbs 17 asp.net asp.net-mvc

我试图绕过"潜在危险的Request.Form值"错误,我没有运气.是的,是的,我已经阅读了所有其他与StackOverflow相关的问题,但似乎没有一个问题让我更接近答案.我正在使用[ValidateInput(false)]所有相关的控制器动作......我已经多次检查过了.我正在使用ValidateRequest='false'所有相关的ASPX视图.

我正在使用ASP.NET MVC 2 Preview 1,但我不认为这是一个问题,因为错误在框架中生成较低; Page.ProcessRequest确切.我看不到任何我做错的事情,我甚至设置<page validateRequest='false'>在web.config中并且也没有解决它.

Sim*_*ver 32

使用asp.net 4,您还需要在web.config中配置验证模式.

将以下内容设置为<system.web>元素的子 元素:

<httpRuntime requestValidationMode="2.0"/>
Run Code Online (Sandbox Code Playgroud)

Asp.Net 4 4.0默认将requestValidationMode设置为,它告诉系统在HTTP请求的BeginRequst阶段之前执行请求验证.验证将在系统到达action属性之前发生,告诉它不验证请求,从而使属性无效.设置requestValidationMode ="2.0"将恢复为asp.net 2.0请求验证行为,允许ValidateInput属性按预期工作.

(感谢Jim - upvotes属于这里)


JC *_*bbs 7

嗯......回答了我自己的问题......罪魁祸首:Html.RenderAction<T>.如果在请求上下文中有任何其他操作的调用(例如,来自母版页或子部分),则这些操作也需要进行[ValidateInput(false)]适当的设置.这似乎是一个问题,虽然使用MVC或Page对象在ASP.NET中的工作方式,因为这是一个真正混淆的错误.