【问题标题】:Why am I getting a HTTP-400 Bad Request error with webmatrix cshtml?为什么我在使用 webmatrix cshtml 时收到 HTTP-400 Bad Request 错误?
【发布时间】:2014-05-23 22:30:06
【问题描述】:

如果我提交这样的网址:

localhost:38245/TeamWork/Group/1/LONG-COMMENT-POSTED-BY-USER,

我收到一条错误消息,显示“错误请求 - 无效 URL HTTP 错误 400。请求 URL 无效。” ?

【问题讨论】:

    标签: razor webmatrix http-status-code-400


    【解决方案1】:

    在 IIS 中 URL 的默认最大长度为 4096。您很可能违反了用户发布的评论。通常,传输此类数据的最佳方式是通过 POST 而不是 URL。您可以在 IIS 配置的 requestLimits 部分中将评论修剪为更合适的大小以增加 maxUrl 值:http://msdn.microsoft.com/en-us/library/ms689462%28v=vs.90%29.aspx

    【讨论】:

      【解决方案2】:

      首先,HTTP 400 错误适用于客户端出错的情况。正如您自己注意到的那样,这是一个糟糕的请求错误。这意味着可能由于语法错误,请求无法执行。正如 Mike Brind 所提到的,您很可能超出了 URL 的最大长度(无论如何都是默认值)

      其次,您为什么要尝试通过 URL“提交”长帖子?请改用 POST 方法。一种方法是使用 Jquery 的 Post 方法来执行此操作。见this。或者只是通过 OnClick 方法调用表单的提交方法,或者用户正在提交表单。

      POST 非常适合传输大量数据。所以从客户端提交数据,目前最简单的方法是使用 POST 来归档它。

      【讨论】:

      • 我的问题是我正在使用 XMLHttp requets 来获取(例如)文本区域(用户在其中写评论)的值,并以链接的形式发送它(如我展示的一个)到一个cshtml文件,该文件将“LONG-COMMENT-POSTED-BY-USER”插入数据库。所以每当我写一篇长文章时,它都会显示 400 错误。我还需要使用“post”吗?
      【解决方案3】:

      正如您在问题代码部分中所说的那样,

      localhost:38245/TeamWork/Group/1/LONG-COMMENT-POSTED-BY-USER
      

      用户的长评论必须在您网站的web.config 文件中的限制范围内。

      其次,没有服务器会允许一个非常长的 URL 认为用户可能试图发布恶意软件。此外,使用短 URL 有利于数据传输,因为它们消耗的数据更少。

      从 Requests 的限制中可以很容易地理解 URL 必须小于 4096 字节,只有 4KB。那么你认为所有的 URL 都是 4KB 吗?

      由于 Mike 建议使用 POST 请求来发送长数据,我也建议您使用 HttpPost 请求来发送这种类型的长数据。这样,浏览器将加密数据并将其作为请求的附件发送。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-09-19
        • 2019-04-20
        • 1970-01-01
        • 2022-01-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-11-09
        相关资源
        最近更新 更多