Как включить загрузку больших файлов в классическом ASP на IIS 7?

недавно мне пришлось получить старое приложение ASP, работающее в IIS 7.5 на сервере W2K8. Почти все работает нормально, за исключением того, что я не могу заставить его принимать загрузки больше, чем ~200kB. Я нашел настройку, которая из того, что я могу понять, должна быть трюком, в applicationHost.config, я установил максимальный размер запроса на 100 МБ следующим образом:

<location path="TheNameOfMySite">
    <system.webServer>
        <security>
            <requestFiltering>
                <requestLimits maxAllowedContentLength="104857600" />
            </requestFiltering>
        </security>
    </system.webServer>
</location>

к сожалению, это, кажется, ничего не делает, он по-прежнему отказывается принимать любые файлы размером более 200 КБ, и в файл журнала дает это сообщение об ошибке:

ASP_0104_:_80004005|Operation_not_Allowed

Googling, что указывает на увеличение maxAllowedContentLength Как я сделал выше. Итак, у меня закончились идеи, но я уверен, что умная толпа stackoverflow сможет решить этот вопрос за меньшее время, чем мне потребовалось, чтобы написать этот вопрос.

5 ответов


на maxAllowedContentLength контролирует, сколько данных разрешено отправлять в ответ. Однако вы хотите контролировать, сколько может быть принято в запросе. Это обрабатывается на limits в элементе из файла config. Пример может выглядеть так:-

<system.webServer>
  <asp>
     <cache diskTemplateCacheDirectory="%SystemDrive%\inetpub\temp\ASP Compiled Templates" />
     <limits scriptTimeout="00:02:00"
        queueConnectionTestTime="00:00:05"
        requestQueueMax="1000"
        maxRequestEntityAllowed="104857600"
        />
  </asp>

вы можете настроить это в диспетчере IIS7 в категории "ограничить свойства" в сетке свойств для функции ASP. В качестве альтернативы вы можете использовать команду линия: -

appcmd set config /section:asp /limits.maxRequestEntityAllowed:104857600

обратите внимание, что расширение этого значения увеличивает окно для DOS-атаки, где злоумышленник отправляет большой контент на сервер, поэтому не поддавайтесь соблазну расширить это за пределы того, что вам действительно нужно.


на Windows 2008 - перейти в Администрирование - диспетчер сервера - роли-развернуть - развернуть веб-сервер-кликните на IIS и веб-экземпляр, для которого вы хотите изменить ограничение на размер файла, а затем перейдите на опцию "АСП" расширить "лимит" свойства и свойство нужно изменить 'максимальная запросу лица, тела предел'. Размер файла всегда в байтах, поэтому используйте любой онлайн-калькулятор для вычисления преобразования байтов в КБ или МБ.


во-первых @AnthonyWJones ответ было очень полезно, но не решило мою проблему, на самом деле это немного неточно, и по этой причине я пишу это.

большие загрузки в IIS 6 была ерунда у вас было одно значение конфигурации, чтобы беспокоиться о

AspMaxRequestEntityAllowed

на AspMaxRequestEntityAllowed свойство указывает максимальное количество байтов, которое может в тексте запроса ASP. Если заголовок Content-Length присутствует и указывает объем данных, превышающий значение AspMaxRequestEntityAllowed, IIS возвращает ответ на ошибку 403. Это свойство связано в функции MaxRequestEntityAllowed, но специфичен для запроса ASP. В то время как вы можете установить MaxRequestEntityAllowed свойство до 1 МБ в общей Всемирной паутине Уровень службы публикации (WWW Service), вы можете установить AspMaxRequestEntityAllowed к более низкому значению, если вы знаете, что ваши конкретные приложения ASP обрабатывают меньший объем данных.


С введением IIS 7, и это новая иерархическая система конфигурации на основе XML, которая использует *.config файлы все это стало немного сложнее.

теперь есть два параметра, которые необходимо настроить правильно, прежде чем Большая загрузка файлов будет работать так, как вы ожидаете, и они оба живут в разных областях конфигурации.

maxRequestEntityAllowed

 <configuration>
   <system.webServer>
     <asp>
       <limits maxRequestEntityAllowed="200000" />
     </asp>
   <system.webServer>
 <configuration>

на maxRequestEntityAllowed атрибут задает максимальное количество байтов, разрешенных в теле сущности ASP-запроса. Если заголовок Content-Length присутствует и указывает объем данных, превышающий значение maxRequestEntityAllowed, IIS возвращает ответ на ошибку HTTP 403.

важно: Настройка вышеуказанного параметра будет работать до точки, как вы увидите по умолчанию ниже, но как только вы достигнете этого значения по умолчанию независимо от того, что maxRequestEntityAllowed имеет значение, сервер будет отвечать HTTP 404 не найден ответ на ошибку. Сначала это меня смутило, потому что я подумал, что это мой код возвращает ответ на ошибку 404.

maxAllowedContentLength

 <configuration>
   <system.webServer>
     <security>
       <requestFiltering>
         <requestLimits maxAllowedContentLength="30000000" />
       </requestFiltering>
     </security>
   </system.webServer>
 </configuration>

задает максимальную длину содержимого в запросе, в байтах. Значение по умолчанию-30000000, что составляет приблизительно 28,6 МБ.

этот параметр чрезвычайно важен, поскольку он определяет максимальное количество байтов в запросе IIS (а не ASP-запрос, как Предыдущее значение конфигурации) это не имеет ничего общего с длина содержимого ответа (как уже было сказано ранее). Независимо от того, что maxRequestEntityAllowed (это asp-classic конкретная настройка) имеет значение, если maxAllowedContentLength не установлен или вы пытаетесь загрузить больше, то по умолчанию 28 МБ (прибл.) вы получите ответ на ошибку HTTP 404.

ссылки


для тех, кто не может выполнить команду appcmd из CMD, вам нужно изменить путь на C:\windows\system32\inetsrv поскольку команда находится в этой папке.


принятое здесь решение не сработало для меня. Во-первых, не было элемента, указанного в моей конфигурации, и я не хотел испортить файл конфигурации.

Я тоже пробовал @Шоаиб-Сулеман решение и это тоже не сработало. Наконец, я наткнулся на решение, показанное здесь, и оно сработало.

  1. открыть IIS 7 SnapIn

  2. выберите сайт, который вы хотите включить, чтобы принять большой файл загрузит.

  3. в главном окне дважды щелкните фильтрация запросов'

  4. после открытия окна вы можете увидеть вверху список вкладок, например: расширения имен файлов, правила, скрытые сегменты и так далее...

    независимо от выбранной вкладки в главном окне щелкните правой кнопкой мыши, чтобы отобразить всплывающее контекстное меню. В меню выберите пункт "Изменить настройки объектов".

  5. в появившейся форме измените " максимально допустимый длина содержимого (байт)"