我遇到了requestValidationMode="4.0"的问题,如果您以某种形式提交html标签,则该请求将被标记为无效,并且应用程序将抛出A potentially dangerous Request.Form value was detected from the client

两种最受欢迎​​的解决方案是在全局级别上将requestValidationMode="2.0"validateRequest='false'结合使用,或者在全局范围内将其保留为4.0,但在其web.config中创建一个列为2.0的子目录,并将所有您不想在那里验证。

我真正想要的是保留4.0,但要在4.0 RequestValidator类中添加一些逻辑,以防止它只是形式上的HTML引发错误。

最佳答案

我真笨。就在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>

关于asp.net - 是否可以扩展ASP.NET 4.0 RequestValidator?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24307168/

10-12 22:15