我有一个asp.net-mvc网站,我有一个案例,我在URL中有一个很长的查询字符串。这在以前不是问题,但在一些情况下我突然得到这个错误:
404-File或director not found - 您要查找的资源可能已被删除,名称已更改或暂时不可用。
我还没有证明它是由于url长度,但我假设这与查询字符串的长度相关的原因是,如果我选择删除查询字符串的某些部分它工作正常我已经通过每个部分(以识别查询字符串的一部分是"损坏"
我能够在我的示例中重现此错误,其总网址长度为2805个字符。这是预期的吗?我在Firefox和Internet Explorer中都看到了这个问题。
我问的原因是,从我的谷歌搜索,当查询字符串太长时,似乎IIS引发了不同的错误(415或414错误as described here)
这是在服务器端设置的吗?在web.config?
答案 0 :(得分:11)
<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
答案 1 :(得分:4)
每MSDN:
当请求过滤因HTTP请求超出请求限制而阻止HTTP请求时,IIS 7将向客户端返回HTTP 404错误,并使用唯一的子状态记录以下HTTP状态之一,该子状态标识请求的原因被拒绝:
| HTTP | Substatus Description |
|---------|---------------------------|
| 404.13 | Content Length Too Large |
| 404.14 | URL Too Long |
| 404.15 | Query String Too Long |
FYI - 2048通常被认为是URL长度的最高跨浏览器限制。
答案 2 :(得分:2)
似乎IIS为非常长的查询字符串抛出了非标准的404.15错误代码。这可能被默认错误处理程序所掩盖,实际错误被映射到裸404错误。
阅读本文了解详情: http://www.iis.net/configreference/system.webserver/security/requestfiltering/requestlimits