2015-12-02 3 views
4

У меня есть мои ASP.NET WebAPIs, размещенные в IIS 7.5+, у которых максимальная длина разрешенного Max по умолчанию установлена ​​в 30000000 байт.Что все места для проверки ограничения размера загрузки файлов?

Когда я открываю функцию моего webAPI на IIS и проверяю там запись, он говорит 30000000 байт, но когда я делаю загрузку файлов размером более 4 МБ в webAPI, это исключение для исключения, как показано ниже.

Сообщение «Максимальная длина запроса превышена».

Трассировка стека:

в System.Web.HttpBufferlessInputStream. ValidateRequestEntityLength() в System.Web.HttpBufferlessInputStream.GetPreloadedContent (байт [] буфера, Int32 & смещение, Int32 & счетчик) на System.Web.HttpBufferlessInputStream.BeginRead (байт [] буфера, Int32 смещение, граф Int32, AsyncCallback обратный вызов, состояние объекта) в System.IO.Stream.b__d (поток потока, аргументы ReadWriteParameters, обратный вызов AsyncCallback, состояние объекта) в System.Threading.Tasks.TaskFactory`1.FromAsyncTrim [TInstance, TArgs] (TInstance thisRef, TArgs args, Func`5 beginMethod, Func`3 endMethod) в System.IO.Stream.BeginEndReadAsync (буфер Byte [], смещение Int32, количество Int32) в System.IO.Stream.ReadAsync (буфер Byte [], смещение Int32 , Int32 count, CancellationToken cance llationToken) at System.Web.Http.WebHost.SeekableBufferedRequestStream.d__0.MoveNext() --- Конец трассировки стека из предыдущего места, где было выбрано исключение - в System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (Задача задача) на System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (задача) задача на System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() в System.Net.Http.HttpContentMultipartExtensions.d__8.MoveNext()

Файлы размером менее 4 МБ загружаются в порядке.

Любая идея, какие места я должен искать, чтобы узнать, где установлен этот предел?

То, что я пробовал:

Я проверил Web.config Сервера, machine.config, а также все web.config приложения, но не вижу вход для ограничения размера в любом месте.

Я также попытался настроить записи в файлах web.config webAPI - maxRequestLength и maxAllowedContentLength, как указано в других вопросах, которые требуют увеличения ограничения на размер для загрузки файлов. При выполнении этой функции фильтрации запросов в IIS показывалось новое значение, но я все еще получал такое же исключение для файлов размером более 4 МБ.

+0

Вы пробовали yo set ''? –

+0

Я думаю, что этот ответ может быть полезным: http://stackoverflow.com/a/30870507/1718624 – JonFriesen

+0

Как насчет этого: http://stackoverflow.com/questions/15506648/how-to-upload-a-large-file -with-asp-net-mvc4-web-api-with-progressbar – lcryder

ответ

3

Как указано here, вы должны установить оба maxRequestLength и maxAllowedContentLength.

Вы можете установить maxRequestLength в Интернете.конфиг таким образом:

<system.web> 
    <httpRuntime maxRequestLength="size in kilo bytes" /> 
</system.web> 

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

По умолчанию 4096 (4 МБ).

Также вы можете установить maxAllowedContentLength в web.config таким образом:

<system.webServer> 
    <security> 
     <requestFiltering> 
      <requestLimits maxAllowedContentLength="size in bytes" /> 
     </requestFiltering> 
    </security> 
</system.webServer> 

Указывает максимальную длину содержимого в запросе, в байтах.

Значение по умолчанию 30000000.

Также убедитесь, что вы меняете конфиг в нужный файл. Для получения дополнительной информации о файле конфигурации asp.net вы можете увидеть ASP.NET Configuration File Hierarchy and Inheritance

+1

Спасибо за ответ, я обновили мой вопрос. Я уже пробовал это, и он не работает для меня. – Guanxi

+0

Вы установили оба из них? –

+0

Да, я настраиваю их обоих. – Guanxi

 Смежные вопросы

  • Нет связанных вопросов^_^