如何在 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 字符串}
.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 字符串}