HTTP错误414.请求URL太长。 asp.net

我收到错误“HTTP错误414.请求URL太长。” 从下面的文章,我明白这是由于一个非常长的查询字符串:

http://www.mytecbits.com/microsoft/iis/query-string-too-long

  • 在web.config中,我有maxQueryStringLength="2097151" 。 这是最大值吗?
  • 为了解决这个问题,我应该在web.config中设置maxUrl吗? 如果是这样,支持的最大值是多少?
  • 我该怎么办才能解决这个错误?


    这个错误实际上是从http.sys抛出,而不是从IIS中抛出。 在请求传递到请求处理管道中的IIS之前,会引发错误。

  • 要验证这一点,您可以按照https://stackoverflow.com/a/32022511/12484中的说明检查HTTP响应标头中的服务器标头值。
  • 要让https.sys接受更长的请求URL而不会引发HTTP 414错误,请在服务器PC上的Windows注册表Computer HKEY_LOCAL_MACHINE SYSTEM CurrentControlSet Services HTTP Parameters中创建一个名为MaxFieldLength的DWORD类型值并且值足够大,例如65535。

  • 参考:Windows的Http.sys注册表设置
  • 如果您决定进行此项更改,那么显然它需要在所有环境(包括所有生产服务器)中进行 - 而不仅仅是在您的本地开发PC上。

    此外,无论您的团队用于设置新服务器实例的任何脚本和/或文档都需要更新以包含此注册表设置,以便您的团队在创建新产品后的18个月内不会忘记应用此设置服务器。

    最后,请注意,进行此更改可能会对服务器上运行的所有应用程序造成不利的安全后果,因为攻击者提交的大型HTTP请求不会像通常那样在管道早期被拒绝。

    作为将此更改绕过http.sys安全性的替代方法,请考虑将请求更改为接受HTTP POST而不是HTTP GET,然后将参数放入POST请求正文中,而不是放入长URL中。 有关这方面的更多讨论,请参阅使用一系列查询参数设计RESTful GET API的问题。


    正如此答案中所述 - >不同浏览器中URL的最大长度是多少? url的允许长度取决于浏览器和服务器的组合。 因此,很难说确切的网址可以多久。 答案建议在URL中保持低于2000字符。 我不知道你的查询字符串为什么这么长。 你能缩短它吗? 在不了解解决方案和查询字符串的情况下很难给出任何建议。


    一般来说,Url的长度有其自己的限制,如果你设置了这个值,你可能会解决一段时间的问题,但要记住,对于很长的url情况,最好的做法是使用表单。 具体而言,最好使用POST操作而不是Get。

    链接地址: http://www.djcxy.com/p/42109.html

    上一篇: HTTP Error 414. The request URL is too long. asp.net

    下一篇: What is the maximum possible length of a query string?