В asp.net-mvc, будет ли слишком длинная строка запроса приводить к ошибке 404-файла?
У меня аспид.net-MVC site и у меня есть случай, когда у меня очень длинная строка запроса в URL-адресе. Это ранее не было проблемой, но я внезапно получаю эту ошибку в нескольких случаях:
404-файл или директор не найден-ресурс, который вы ищете, возможно, был удален, его имя изменилось, или временно недоступен.
Я не доказал, что это связано с длиной url, но причина, по которой я предполагаю, что это связано с длиной querystring заключается в том, что если я выбрал удалить определенные части строки запроса, она отлично работает, и я прошел через каждый раздел (для идентификации части строки запроса "поврежден"
Я могу воспроизвести эту ошибку в моем примере, который имеет общую длину url 2805 символов. Это нормально? Я вижу проблему как в Firefox, так и в Internet Explorer.
причина, по которой я спрашиваю, заключается в том, что из моего googling кажется, что IIS выдает другую ошибку, когда querystring слишком long (415 или 414 ошибка как описано здесь)
Это что-то, что установлено на стороне сервера? в сети.конфиг?
3 ответов
<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=против 100).aspx
Per 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.
похоже, что IIS выдает нестандартный код ошибки 404.15 для очень длинных строк запроса. Вероятно, это затеняется обработчиком ошибок по умолчанию, а фактическая ошибка сопоставляется с ошибкой 404.
прочитайте это для деталей: http://www.iis.net/configreference/system.webserver/security/requestfiltering/requestlimits