ValidateRequest = False但是在行动中它仍然是True而忽略了吗?

Sad*_*egh 8 asp.net validation asp.net-mvc

我希望在ASP.NET MVC 2.0 RTM中的特定视图上禁用RequestValidation.所以我添加了一些查看Page指令部分所需的内容,如下所示:

<%@ Page ValidateRequest="false" Language="C#" MasterPageFile="Path" Inherits="System.Web.Mvc.ViewPage<Path>" %>
Run Code Online (Sandbox Code Playgroud)

RequestValidation未禁用!我还将RequestValidation属性添加到控制器中的相关操作,如下所示:

[System.Web.Mvc.ValidateInput(false)]
public System.Web.Mvc.ActionResult Create(Model instance)
{
    //Do here something
}
Run Code Online (Sandbox Code Playgroud)

:')但RequestValidation也没有禁用!

在最后一次尝试我在Web.config文件中将RequestValidation设置为false,如下所示:

<pages validateRequest="false" />
Run Code Online (Sandbox Code Playgroud)

RequestValidation仍然没有关闭!

为什么?提前致谢 ;)

Bra*_*nov 13

如果您使用的是asp.net 4.0,则验证请求功能行为已从2.0版更改.在这里查看重大更改文档.如果是这种情况,您可以通过将请求验证行为设置回web.config中的2.0来解决问题,如下所示:

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

  • 今天救了我的屁股.谢谢 :) (2认同)
  • 这也解决了我的问题.但是我不明白为什么.突破性的变化讨论了将验证扩展到非aspx请求,但是我只将它用于普通的aspx页面.现在,在我看来,validateRequest只是在4.0中被破坏了.如果没有,是否有任何正确的方法在4.0中实现它而基本上没有恢复到2.0? (2认同)
  • 仅供参考:"第一个更改是将httpRuntime元素的requestValidationMode属性设置为"2.0".此设置使请求验证在请求处理事件序列中稍后发生.对于使用ASP.NET 4及更高版本的应用程序,此设置是必需的,因为从ASP.NET 4开始,请求验证在请求生命周期的早期发生,而不是在以前的ASP.NET版本中进行." 来自https://msdn.microsoft.com/en-us/library/hh882339.aspx (2认同)