是否可以扩展ASP.NET 4.0 RequestValidator?

时间:2014-06-19 12:55:50

标签: asp.net asp.net-mvc

我遇到问题requestValidationMode="4.0"如果您在表单中提交html标记,请求将被标记为无效,应用将抛出A potentially dangerous Request.Form value was detected from the client

两个最受欢迎的解决方案是在全局级别使用requestValidationMode="2.0"validateRequest='false'结合使用,或者将全局保持为4.0,但创建一个列为2.0的子目录在它的web.config中,放置你不想在那里验证的所有页面。

我真正想要的是保留4.0但是为4.0 RequestValidator类添加一点逻辑,以防止它在表单中只是HTML时抛出错误。

1 个答案:

答案 0 :(得分:1)

我很蠢。它位于documentation

namespace WebApplication4
{
    public class CustomRequestValidator : RequestValidator
    {
        protected override bool IsValidRequestString(
            HttpContext context, string value,
            RequestValidationSource requestValidationSource, string collectionKey,
            out int validationFailureIndex)
        {
            return base.IsValidRequestString(context, value, requestValidationSource, collectionKey, out validationFailureIndex);
            //validationFailureIndex = -1;
            //return true;
        }
    }
}

<system.web>
    <httpRuntime targetFramework="4.5" requestValidationType="WebApplication4.CustomRequestValidator "/>
    ...
</system.web>