我遇到了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/