2015-02-23 121 views
5

我有一个asp.net-mvc网站,我有一个在URL中有很长查询字符串的情况。这是以前没有的问题,但我突然收到此错误在少数情况下:在asp.net-mvc中,querystring太长会导致404 File not found错误?

enter image description here 未找到404文件或导演 - 你正在寻找可能已经删除该资源,有其名称更改,或暂时不可用。

我还没有证明它是由于网址的长度,但我认为这是与查询字符串的长度有关的原因是,如果我选择删除查询字符串的某些部分,它工作正常,我已经通过每个部分(以确定部分查询字符串是“损坏的”)

我能够在我的示例中重现此错误,其总长度为2805个字符。和Internet Explorer

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

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

+0

与运行在IIS和Datatables上的Django发生的约3500个字符的ajax查询有完全相同的问题。设置限制为5000解决了这一点,感谢您的帖子,但我希望错误消息更丰富。 – tarikki 2017-01-16 16:20:08

回答

2

好像IIS会因很长的查询字符串非标准404.15错误代码。这可能被默认的错误处理程序所掩盖,并且实际的错误被映射为裸露的404错误。

阅读本详细信息: http://www.iis.net/configreference/system.webserver/security/requestfiltering/requestlimits

+0

这是我的问题。我没有收到404.15错误,只是上面的一般错误 – leora 2015-02-23 19:51:28

+0

由于默认的customErrors设置为RemoteOnly,您可以在大多数时间在localhost上捕获这些错误AS-IS。您还可以尝试使用多种方法禁用IIS错误页面。见[这里](http://ow.ly/JxLWh)[,这里](http://ow.ly/JxM0i)[,这里](http://ow.ly/JxM4Q) – Faheem 2015-02-23 22:52:56

3

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  | 

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