如何在 ASP.NET MVC、IIS Express 中禁用请求验证

How to disable request validation in ASP.NET MVC, IIS Express

.Net Framework 4.5.2,Visual Studio 2015,IIS Express

我想向我的应用程序发送类似 http://localhost:49974/xxx/xml/<a><b></b></a> 的请求。这会导致服务器错误和消息:A potentially dangerous Request.Path value was detected from the client (="/xxx/xml/<a><b></b></a>").

按照 MSDN 的说明,我设置了 requestValidationMode="2.0":

<system.web>
  <httpRuntime requestValidationMode="2.0" targetFramework="4.5.2" />
</system.web>

并将 [ValidateInput(false)] 添加到控制器的操作中:

[ValidateInput(false)]
public ActionResult Xml()
{
    return View("../Home/Index");
}

但是我在上面提出的请求中仍然得到完全相同的错误。

如果您能够将 acionmethod 转换为使用模型接收数据,则可以在模型上指定 [AllowHtml] 属性属性。

这也确保仅针对此特定 属性 跳过验证。

动作方法:

public ActionResult Xml(XmlModel vm)
{
    return View("../Home/Index");
}

型号

public class XmlModel
{
    [AllowHtml]
    public string xml { get; set; }
}

你的 url 看起来像 http://localhost:49974/xxx/xml/?xml={你的 xml 字符串}