Отправка данных в HttpHandler размером более ~ 29 МБ выдает ошибку 404
-
01-10-2019 - |
Вопрос
Я тестирую HttpHandler, который принимает XML.Это работает нормально, когда публикуется небольшой объем данных, но если я публикую данные размером более приблизительно 29 МБ, я получаю сообщение об ошибке asp.net 404.
Я отправляю сообщение обработчику из другого обработчика в том же проекте, и я попробовал 2 метода - 1.HttpWebRequest с помощью "POST" 2.WebClient с uploadFile() и UploadData()
Я получаю ту же ошибку 404, когда опубликованные данные указаны выше 28.6 МБ.
Я также попытался поставить точку останова прямо в начале принимающего обработчика и выполнить отладку.По нему никогда не бьют.Похоже, что обработчик так и не был вызван.Работает нормально для данных меньшего размера.
У меня уже есть следующая настройка.Что я делаю не так?
<httpRuntime maxRequestLength="1048576" />
Редактировать:Я также пробовал отправлять сообщения в другой обработчик, который не использует отправленные данные, просто для тестирования, но результаты те же.Окружающая среда:Win 7, IIS 7.5, .net 3.5, VS 2008 альтернативный текст http://img401.imageshack.us/img401/4099/errormr.png
Решение
Я обнаружил, что проблема связана с IIS 7 и выше.Для этого требуется, чтобы максимальная длина запроса была установлена в другом месте.
Смотрите следующие ссылки -
http://www.experts-exchange.com/Programming/Languages/.NET/ASP.NET/Q_22943810.html
http://msdn.microsoft.com/en-us/library/ms689462%28VS.90%29.aspx
Значение по умолчанию равно 30000000.который составляет 28,6 мбайт.Правильный способ установки в web.config - это -
<system.webServer>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="1073741824"></requestLimits>
</requestFiltering>
</security>
</system.webServer>
Эта конфигурация устранила ошибку, которую я получал.Я хотел бы, чтобы сообщения об ошибках были более наглядными, по крайней мере, на локальных машинах
Означает ли это, что настройки <httpRuntime maxRequestLength="1048576" /> достаточно для IIS 6?(текущий сервер - win2003)
Другие советы
Попробуйте добавить этот раздел на web.config
файл:
<location path="YourHandler.aspx">
<system.web>
<httpRuntime maxRequestLength="1048576" executionTimeout="3600" />
</system.web>
</location>
Предполагая, что вы обработчик YourHandler.aspx
.