如果我有控制器:
[HttpPost]
public ReturnType ControllerMethod(CustomModel c)
{
...
}
第三方正在向此方法发布数据:
abc-xyz=testdata
一种方法是使用:
Request.Params["abc-xyz"]
但是,如果请求可能包含恶意代码,如果任何请求参数包含一些有问题的代码,则只要HttpRequestValidationException
被调用,IIS就会抛出Request.Params[""]
。
现在,我不想在任何地方关闭验证,而是将发布的数据映射到我的模型。这样,如果“潜在恶意代码”包含在任何不是“abc-xyz”的参数中,我的应用程序将不会抛出HttpRequestValidationException
。但是,它会检查使用过的参数,如果访问数据可能是恶意的,则抛出HttpRequestValidationException
。
如果发布的数据名称中有破折号/连字符,我该怎么做?
我尝试了一些变体,包括:
public class CustomModel
{
[Required]
public string abc_xyz
}
答案 0 :(得分:2)
在这种情况下,您应该编写自己的ModelBinder
,将请求中的值转换为CustomModel
所需的值。
要完成请求验证,您可以使用控制器操作上的ValidateInputAttribute
将其关闭。