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 на месте не устранит проблему. Надеюсь, это поможет другим с той же проблемой.