Как настроить web.config для разрешения запросов любой длины
Я строю сайт, на котором я хотел бы создать сторону клиентского файла из значения элемента textarea.
У меня есть код для этого, но я получаю эту ошибку
Ошибка HTTP 404.15 - не найден Модуль фильтрации запросов настроен на отклонение запроса, если строка запроса слишком длинная.
Есть ли способ переопределить это, чтобы я мог обрабатывать запросы любого размера?
Если нет, есть ли способ генерировать файлы на стороне клиента без использования файловой системы / активного объекта x?
Спасибо
10 ответов
Добавьте следующее в ваш web.config:
<system.webServer>
<security>
<requestFiltering>
<requestLimits maxQueryString="32768"/>
</requestFiltering>
</security>
</system.webServer>
Увидеть:
http://www.iis.net/ConfigReference/system.webServer/security/requestFiltering/requestLimits
Обновлено, чтобы отразить комментарии.
Элемент requestLimits для requestFiltering [Схема настроек IIS]
Вам также может понадобиться добавить следующее в ваш web.config
<system.web>
<httpRuntime maxQueryStringLength="32768" maxUrlLength="65536"/>
</system.web>
См.: Элемент httpRuntime (Схема настроек ASP.NET)
Конечно, числа (32768 и 65536) в настройках конфигурации выше являются лишь примерами. Вам не нужно использовать эти точные значения.
В моем случае ( 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.:)
Если вы столкнулись с этой проблемой при запуске веб-сервера IIS 8.5, вы можете использовать следующий метод.
Сначала найдите модуль "Фильтрация запросов" на сайте IIS, над которым вы работаете, затем дважды щелкните его...
Затем вам нужно щелкнуть правой кнопкой мыши в белой области, показанной ниже, а затем выбрать пункт контекстного меню под названием "Редактировать настройки компонента".
Затем последнее, что нужно сделать, это изменить значение "Максимальная строка запроса (байт)" с 2048 на более подходящее, например 5000, для ваших нужд.
Еще кое-что нужно проверить: если ваш сайт использует MVC, это может произойти, если вы добавили [Authorize] в свой класс контроллера входа. Он не может получить доступ к методу входа в систему, потому что он не авторизован, поэтому он перенаправляет на метод входа в систему -> boom.
Это также вызовет ошибку, если вы передадите большую строку в параметре вызова ajax.
поэтому для этого всегда используйте сообщение типа в ajax, которое решит вашу проблему на 100%, и нет необходимости устанавливать длину в web.config.
// var UserId= массив из 1000 идентификаторов пользователей
$.ajax({ global: false, url: SitePath + "/User/getAussizzMembersData", "data": { UserIds: UserId}, "type": "POST", "dataType": "JSON" }}
Мне пришлось добавить [AllowAnonymous] к функциям ActionResult на моей странице входа в систему, потому что пользователь еще не прошел аутентификацию.
Для тех, кто сталкивается с этим при запуске приложений из Visual Studio при использовании IIS Express, сначала необходимо найти файл applicationhost.config , используемый приложением. См. Ответ на /questions/34595148/gde-nahoditsya-fajl-konfiguratsii-metabazyi-iis-express/34595152#34595152 о том, как найти файл applicationhost.config . Затем вы можете изменить значение maxQueryString, как описано выше.
Если на вашем веб-сайте используется проверка подлинности, но в IIS не настроен правильный метод проверки подлинности (например, Basic, Forms и т. Д.), То браузер застрянет в цикле перенаправления. Это приводит к тому, что URL перенаправления становится все длиннее и длиннее, пока не взорвется.
У меня была похожая проблема при попытке развернуть веб-приложение ASP в IIS 8. Чтобы исправить это, я сделал, как предложили Мэтт и Лениэль выше. Но также пришлось настроить параметры аутентификации на моем сайте, чтобы включить анонимную аутентификацию. И это сработало для меня.
Ошибка HTTP 404.15 - не найден Модуль фильтрации запросов настроен на отклонение запроса, если строка запроса слишком длинная.
Чтобы решить эту проблему, проверьте в исходном коде, Form
у тега есть свойство method
это получить / установить состояние.
Если так, то method
собственность должна быть удалена.