标签: requestvalidationmode

如何在不将RequestValidationMode设置为2.0的情况下禁用请求验证?

我们刚刚升级到ASP.NET 4.0,发现requestValidation不再有效.MSDN文档建议我们需要将web.config中的requestValidationMode设置为2.0:

  • 4.0(默认值).HttpRequest对象在内部设置一个标志,指示每当访问任何HTTP请求数据时都应触发请求验证.这保证了在请求期间访问诸如cookie和URL之类的数据之前触发请求验证.将忽略配置文件中的pages元素(如果有)或单个页面中的@ Page指令的请求验证设置.
  • 2.0.仅对页面启用请求验证,而不是对所有HTTP请求启用.此外,配置文件中的pages元素(如果有)或单个页面中的@ Page指令的请求验证设置用于确定要验证的页面请求.

这对我们有用,但我有点困惑.似乎我们将其置于传统/兼容模式.当然应该可以有4.0行为,但仍然可以选择在页面上关闭它?

.net c# asp.net request-validation requestvalidationmode

15
推荐指数
3
解决办法
2万
查看次数

<httpRuntime requestValidationMode ="2.0"/>不起作用(使用IIS 6.0)

当我将HTML输入到表单中时,我的测试Web服务器上安装了.NET 4.0的应用程序出错了.我得到通常的错误:

从客户端检测到潜在危险的Request.Form值

这是由于.NET 4.0中的更改导致禁用关闭HTML输入的自动验证.我可以在我的本地开发机器上添加

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

指向<system.web>我的根web.config部分的指令,然后.NET遵循<pages validateRequest="false" />同一根web.config中的指令.奇怪的是,我需要在本地计算机(版本5.1)上重新启动IIS才能使此更改生效.

当我将根web.config部署到我们的测试服务器时,我仍然得到验证错误.我尝试过使用run > iisreset,停止和启动IIS(测试服务器上的6.0版本),我甚至重新启动了服务器以完全清除.NET.我的应用程序肯定是拿起新的根web.config(我已经测试了这个),但是这个<httpRuntime requestValidationMode="2.0" />指令似乎只是被忽略了.

我的应用程序在我的本地计算机和测试服务器上配置为.NET 4.0应用程序.我已经尝试重建应用程序并将其重新部署到测试Web服务器.任何人都可以建议我需要做些什么来使这个工作?

谢谢,克里斯

asp.net validation .net-4.0 requestvalidationmode

9
推荐指数
1
解决办法
2万
查看次数

ASP.NET MVC在Area中处理RequestValidationException

我有一个自定义过滤器,我用了多年来以RequestValidationException更加用户友好的方式处理s.在我介绍区域之前,它在所有场景中都没有问题:

public class HandleHttpRequestValidationExceptionAttribute : HandleErrorAttribute
{
    public override void OnException(ExceptionContext filterContext)
    {
        //base.OnException(filterContext);

        if (!(filterContext.Exception is HttpRequestValidationException))
            return;

        const string viewName = "~/Views/Errors/HttpRequestValidationException.cshtml";

        var result = new ViewResult
        {
            ViewName = viewName,
            ViewData = { Model = filterContext.Exception.Message }
        };

        //result.ViewBag.StatusCode = 200;

        filterContext.Result = result;
        filterContext.RouteData.Values["area"] = "";
        filterContext.ExceptionHandled = true;
        filterContext.HttpContext.Response.Clear();
        filterContext.HttpContext.Response.StatusCode = 200;
        filterContext.HttpContext.Response.TrySkipIisCustomErrors = true;
        filterContext.HttpContext.Server.ClearError();
    }
}
Run Code Online (Sandbox Code Playgroud)

...在FilterConfig中注册:

public class FilterConfig
{
    public static void RegisterGlobalFilters(GlobalFilterCollection filters)
    {
        //filters.Add(new HandleErrorAttribute()); …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc requestvalidationmode asp.net-mvc-5

5
推荐指数
1
解决办法
197
查看次数