【问题标题】:How to disable request validation in ASP.NET MVC, IIS Express如何在 ASP.NET MVC、IIS Express 中禁用请求验证
【发布时间】:2017-03-12 01:24:33
【问题描述】:

.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)] 添加到 cottrtoller 的操作中:

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

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

【问题讨论】:

    标签: c# asp.net-mvc asp.net-mvc-4 iis iis-express


    【解决方案1】:

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

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

    动作方法:

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

    型号

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

    您的网址看起来像 http://localhost:49974/xxx/xml/?xml={您的 xml 字符串}

    【讨论】:

    • 好的,我明白了,但是有没有办法配置 URI 的验证?我知道在 URI 中发送 XML 是一个坏主意,但这是我能想到的最简单的事情,我想让它工作。
    • 根据我的经验,我发现使用模型允许这样做效果最好,并且比在整个方法/应用程序上禁用请求验证更安全。仍然可以通过 url 发送 xmldata。有关示例,请参阅我编辑的答案
    猜你喜欢
    • 2014-11-06
    • 2010-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-04
    • 2017-04-06
    • 2011-02-21
    • 1970-01-01
    相关资源
    最近更新 更多