如何使用ValidateInput(false)在web api中装饰动作

时间:2017-02-08 10:24:12

标签: c# asp.net-mvc asp.net-web-api action-filter

我需要从普通MVC控制器迁移到WebApi控制器。

我的普通mvc控制器。

[HttpPost]
[ValidateInput(false)]
public ActionResult Validate(string data)
{

}

WebApi控制器

[HttpPost]
[ValidateInput(false)] 
// the moment I resolve the namespace System.Web.Mvc all the [HttpPost],[HttpGet] starts throwing error.
public HttpStatusCode Post([FromBody]string data)
{

}

有人可以解释为什么这样&如何解决这个问题?

3 个答案:

答案 0 :(得分:1)

实际上不必在你的web api中使用类似[ValidateInput(false)] 的东西,这是为了防止MVC应用程序中的XSS攻击。

此外,您必须引用的命名空间是 System.Web.Http

答案 1 :(得分:0)

要拥有Api控制器,您必须继承ApiController。此外,如果通过添加命名空间开始获取错误,那么您必须明确地将命名空间添加到这样的属性中。 System.Web.Http.HttpPost

答案 2 :(得分:0)

我使用了here中的javascript中的htmlEncode和C#中的HttpUtility.HtmlDecode。