在 asp.net-mvc 中,querystring 太长会导致 404 File not found 错误吗?

In asp.net-mvc, would a querystring too long result in 404 File not found error?

我有一个 asp.net-mvc 站点,我有一个例子,我在 URL 中有一个很长的查询字符串。这以前不是问题,但在某些情况下我突然收到此错误:

404-找不到文件或目录 - 您要查找的资源可能已被删除、已更改名称或暂时不可用。

我还没有证明它是由于 url 长度,但我假设这与查询字符串的长度有关的原因是,如果我选择删除查询字符串的某些部分,它工作正常并且我已经浏览了每个部分(确定查询字符串的一部分是 "corrupt"

我能够在我的示例中重现此错误,该示例的总 url 长度为 2805 个字符。这是预期的吗?我在 Firefox 和 Internet Explorer 中都看到了这个问题。

我问的原因是,从我的谷歌搜索来看,当查询字符串太长时,IIS 似乎会抛出一个不同的错误(415 或 414 错误 as described here

这是在服务器端设置的吗?在 web.config?

<system.webServer>
  <security>
    <requestFiltering>
      <requestLimits maxQueryString="xxxx"/>
    </requestFiltering>
  </security>
</system.webServer>

http://www.iis.net/ConfigReference/system.webServer/security/requestFiltering/requestLimits

https://msdn.microsoft.com/en-us/library/e1f13641(v=vs.100).aspx

IIS 似乎对非常长的查询字符串抛出了非标准的 404.15 错误代码。这可能被默认错误处理程序掩盖了,实际错误被映射到裸 404 错误。

阅读此内容了解详情: http://www.iis.net/configreference/system.webserver/security/requestfiltering/requestlimits

根据 MSDN:

When request filtering blocks an HTTP request because an HTTP request exceeds the request limits, IIS 7 will return an HTTP 404 error to the client and log one of the following HTTP statuses with a unique substatus that identifies the reason that the request was denied:

| HTTP    | Substatus Description     | 
|---------|---------------------------|
|  404.13 | Content Length Too Large  |
|  404.14 | URL Too Long              |
|  404.15 | Query String Too Long     | 

仅供参考 - 2048 通常被认为是 URL 长度的最高跨浏览器限制。