В asp.net-mvc, будет ли слишком длинная строка запроса приводить к ошибке 404-файла?

У меня аспид.net-MVC site и у меня есть случай, когда у меня очень длинная строка запроса в URL-адресе. Это ранее не было проблемой, но я внезапно получаю эту ошибку в нескольких случаях:

enter image description here404-файл или директор не найден-ресурс, который вы ищете, возможно, был удален, его имя изменилось, или временно недоступен.

Я не доказал, что это связано с длиной 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