IIS7 - Ошибка Webrequest с 404.13, когда размер параметров запроса превышает 30 МБ
У меня простой веб-метод
[WebMethod]
public int myWebMethod(string fileName, Byte[] fileContent)
Однако, когда я передаю массив байтов, размер которого превышает 30 МБ, я получаю ошибку:
Ошибка HTTP 404.13 - не найдено Модуль фильтрации запросов настроен на отказ от запроса, который превышает длину содержимого запроса.
Мой web.config выглядит следующим образом:
<configuration>
<system.web>
<compilation debug="true" targetFramework="4.0"> </compilation>
<authentication mode="Windows" />
<httpRuntime useFullyQualifiedRedirectUrl="true"
maxRequestLength="102400" requestLengthDiskThreshold="102400"
/>
<pages controlRenderingCompatibilityVersion="3.5" clientIDMode="AutoID" />
</system.web>
<system.webServer>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="104857600"/>
</requestFiltering>
</security>
</system.webServer>
</configuration>
Я обыскал, и наиболее распространенной причиной этой проблемы является свойство maxAllowedContentLength
, равное 30 Мб по умолчанию. Однако я установил это как 100mb, а также свойство maxRequestLength
для httpRuntime
.
Я не могу найти решение нигде, которое не устанавливает одно из свойств, которые я уже пробовал выше. Есть что-то, что я пропустил?
Ответы
Ответ 1
Проблема может заключаться в том, что настройки, сделанные в файле web.config, могут быть заменены соответствующими настройками, присутствующими как в applicationhost.config, так и machine.config.
Если у вас есть доступ к ним, проверьте, установлено ли свойство overrideModeDefault для соответствующих разделов Разрешить, как показано в следующем примере:
machine.config
<requestFiltering overrideModeDefault="Allow">
<requestLimits maxAllowedContentLength="104857600"/>
</requestFiltering>
AFAIK нет возможности переопределить эти параметры, если у вас нет доступа к соответствующему файлу конфигурации.
Вы можете найти дополнительную информацию об общесистемной конфигурации и настройках переопределить здесь, здесь и здесь - и очень похожий случай здесь.
Ответ 2
Это довольно старый. Но сегодня у меня такая же проблема. Чтобы исправить это, вам необходимо внести необходимые изменения настроек в web.config, а затем развернуть на веб-сервер. Важная часть состоит в том, что вам необходимо повторно развернуть свое приложение на веб-сервере. Таким образом, параметры IIS обновляются для вас. В зависимости от способа развертывания вам может потребоваться сначала удалить веб-приложение с веб-сервера, а затем снова развернуть. Обновление web.config на месте не устранит проблему. Надеюсь, это поможет другим с той же проблемой.