Вопрос по c#, asp.net-mvc, web-config, query-string, javascript – Как настроить web.config для разрешения запросов любой длины

121

Я строю сайт, на котором я хотел бы создать сторону клиентского файла из значения элемента textarea.

У меня есть код для этого, но я получаю эту ошибку

HTTP Error 404.15 - Not Found The request filtering module is configured to deny a request where the query string is too long.

Есть ли способ переопределить это, чтобы я мог обрабатывать запросы любого размера?

Если нет, есть ли способ генерировать файлы на стороне клиента без использования файловой системы / активного объекта x?

Спасибо

Согласитесь с Джлафаем. Рекомендуется размещать значения, когда у вас есть более 2-3 простых параметров. и когда вы используете строку запроса, обязательно зашифруйте их. Jack
Что вы хотите учесть, так это то, что, хотя длина строки запроса может быть настроена для IIS или вашего приложения, существует стандарт HTTP для длины URL. Поскольку вы используете строку запроса, вы передаете значения как часть URL. Максимальная длина символа URL составляет 2000 символов. Если ваши значения будут длинными строками, было бы лучше POST значения, а не передавать их в строке запроса. jlafay

Ваш Ответ

8   ответов
0

Если ваш веб-сайт использует аутентификацию, но у вас нет правильного метода аутентификации, установленного в IIS (например, Basic, Forms и т. Д.), То браузер застрянет в цикле перенаправления. Это приводит к тому, что URL перенаправления становится все длиннее и длиннее, пока не взорвется.

29

В моем случае (Visual Studio 2012 / IIS Express / приложение ASP.NET MVC 4 / .Net Framework 4.5) то, что действительно работало после 30 минут проб и ошибок, - это установкаmaxQueryStringLength недвижимость в<httpRuntime> тег:

<httpRuntime targetFramework="4.5" maxQueryStringLength="10240" enable="true" />

maxQueryStringLength по умолчанию2048.

Подробнее об этом здесь:

Расширение диапазона допустимых URL

Я пытался установить его в<system.webServer> как@MattVarblow предполагает, но это не сработало ... и это потому, что я использую IIS Express (на основе IIS 8) на моей машине с Windows 8.

Когда я развернул свое приложение в производственной среде (Windows Server 2008 R2 с IIS 7), IE 10 начал возвращать 404 ошибки в запросах AJAX с длинными строками запросов. Затем я подумал, что проблема связана со строкой запроса, и попробовал ответ @ MattVarblow. Это только работало на IIS 7. :)

пришлось и это, и принятый ответ, спасибо.
Для меня это было enable = & quot; true & quot; это сделало волшебство случиться :)
0

Мне пришлось добавить [AllowAnonymous] к функциям ActionResult на моей странице входа в систему, потому что пользователь еще не прошел аутентификацию.

0

У меня была похожая проблема при попытке развернуть веб-приложение ASP в IIS 8. Чтобы исправить это, я сделал, как предложили Мэтт и Лениэль выше. Но также пришлось настроить параметр проверки подлинности моего сайта для включения анонимной проверки подлинности. И это сработало для меня.

6

Еще кое-что нужно проверить: если ваш сайт использует MVC, это может произойти, если вы добавили [Authorize] в свой класс контроллера входа в систему. Он не может получить доступ к методу входа в систему, потому что он не авторизован, поэтому он перенаправляет на метод входа в систему - & gt; бум.

Другой случай, когда сообщение об ошибке, хотя и истинно, не имеет отношения к реальной проблеме.
Спасибо! У меня возникла эта проблема, потому что я переместил Меню / Навигация в частичное представление и другой Контроллер, который не разрешал анонимные подключения.
Также проверьте свойства проекта, так как это может означать, что аутентификация Windows & # x201C; Включена & # x201D; и анонимная аутентификация отключена & # x201D ;. Просьба проверить эту подробную статью -Error (Visual Studio 2013, MVC5): The request filtering module is configured to deny a request where the query string is too long
0

Если вы столкнулись с этой проблемой при запуске веб-сервера IIS 8.5, вы можете использовать следующий метод.

Сначала найдите"Request Filtering" модуль на сайте IIS, над которым вы работаете, затем дважды щелкните по нему ...

enter image description here

Затем вам нужно щелкнуть правой кнопкой мыши в белой области, показанной ниже, затем выбрать опцию контекстного меню под названием"Edit Feature Settings".

enter image description here

Тогда последнее, что нужно сделать, это изменить"Maximum query string (Bytes)" значение от2048 к чему-то более подходящему, например,5000 для ваших нужд.

enter image description here

-1

HTTP Error 404.15 - Not Found The request filtering module is configured to deny a request where the query string is too long.

Чтобы решить эту проблему, проверьте в исходном коде,Form у тега есть свойствоmethod это получить / установить состояние.

Если так, тоmethod собственность должна быть удалена.

219

Добавьте следующее в ваш web.config:

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

Увидеть:

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

Updated to reflect comments.

Элемент requestLimits для requestFiltering [Схема настроек IIS]

Вам также может понадобиться добавить следующее в ваш web.config

<system.web>
    <httpRuntime maxQueryStringLength="32768" maxUrlLength="65536"/>
</system.web>

Увидеть:Элемент httpRuntime (схема настроек ASP.NET)

Конечно, числа (32768 и 65536) в настройках конфигурации выше являются лишь примерами. Вам не нужно использовать эти точные значения.

nnn - это максимальная длина строки, которую вы хотите разрешить, например, 32768
Что такое "nnn"? Это не сработает. Используйте целое число 32768 там.
не работает увидеть этоstackoverflow.com/questions/31624710/…
Одного этого было недостаточно для меня. Мне также пришлось добавить это в раздел system.web: & lt; httpRuntime maxQueryStringLength = & quot; 8192 & quot; / & gt;
Обратите внимание<httpRuntime> тег идет под<system.web>: & lt; system.web & lt; httpRuntime maxQueryStringLength = & quot; 32768 & quot; maxUrlLength = & Quot; 65536 & Quot; / & GT; & Lt; /system.web>

Похожие вопросы