asp.net-mvc – 页面的ValidateRequest设置可以被覆盖吗?

前端之家收集整理的这篇文章主要介绍了asp.net-mvc – 页面的ValidateRequest设置可以被覆盖吗?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个ASP.NET MVC形式,可能(通常)提交一个响应,将触发“从客户端检测到一个潜在危险的Request.Form值”错误

为了试图解决这个问题,我在页面指令中放置了一个ValidateRequest =“false”。

只有问题:我仍然得到的错误

现在,一切都很好,直到我更新到ASP.NET MVC RC今天上午,(根据readme),放置以下在视图web.config:

<pages validateRequest="false" 
       pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter,System.Web.Mvc,Version=1.0.0.0,Culture=neutral,PublicKeyToken=31BF3856AD364E35"
       pageBaseType="System.Web.Mvc.ViewPage,PublicKeyToken=31BF3856AD364E35"
       userControlBaseType="System.Web.Mvc.ViewUserControl,PublicKeyToken=31BF3856AD364E35">
    <controls>
        <add assembly="System.Web.Mvc,PublicKeyToken=31BF3856AD364E35" namespace="System.Web.Mvc" tagPrefix="mvc" />
    </controls>
</pages>

所以,validateRequest对于所有页面应该是false,对吧?我缺少什么?

解决方法

在MVC中,验证发生在控制器级别,而不是页面级别。为了看看为什么会这样,考虑在控制器动作执行的时候,我们不知道选择哪个视图来渲染。 (实际上,控制器动作甚至可能甚至不渲染视图!它可能在客户端打开文件下载提示)。此外,如果用户提交恶意输入到服务器,在视图呈现它的时间太晚了,不能做任何事情。控制器已经将危险输入提交到数据库

相反,请使用属性[ValidateInput(false)]装饰控制器或操作。这将导致我们抑制对该控制器或操作的请求验证。

猜你在找的asp.Net相关文章