2015-07-15 13 views
7

Czy ktoś wie, czy istnieje sposób na złapanie tego błędu?WebApi 2 Maksymalna długość żądania przekroczyła

Zasadniczo próbuję zaimplementować niektóre funkcje, aby umożliwić użytkownikowi przesłanie pliku ze strony internetowej do kontrolera Webapi.

Działa to dobrze, ale jeśli rozmiar pliku przekracza maksymalny rozmiar określony w pliku web.config, serwer zwraca błąd 404.

Chcę być w stanie przechwycić to i zwrócić błąd 500 wraz z komunikatem, który może zostać zużyty przez klienta.

Nie mogę dowiedzieć się, gdzie to zrobić w WebApi, ponieważ metoda Application_Error zaimplementowana w Global.asax nigdy nie jest trafiona i wygląda na to, że IIS nie przekazuje tego do aplikacji WebApi.

+1

Trzeba zwiększyć maksymalny rozmiar żądania dozwolony. Zobacz tę odpowiedź: http://stackoverflow.com/questions/288612/how-to-increase-the-max-upload-file-size-in-asp-net –

+2

Zrobiłem już to zrobić, ale chcę być jest w stanie złapać błąd w przypadkach, gdy zostało to przekroczone. – llihp

Odpowiedz

3

Spróbuj ustawić IIS, aby akceptował żądania 2 GB (w bajtach).

<system.webServer> 
    <security> 
    <requestFiltering> 
     <requestLimits maxAllowedContentLength="2147483648" /> // 2GB 
    </requestFiltering> 
    </security> 
</system.webServer> 

Ustaw również rozsądny rozmiar żądania dla aplikacji ASP.NET (w kilobajtach).

<system.web> 
    <httpRuntime maxRequestLength="4096" /> // 4MB (default) 
</system.web> 

Teraz IIS powinny pozwolić wnioski mniej niż 2GB przejść do aplikacji, ale aplikacja będzie wskoczyć Application_Error osiągając rozmiar żądania 4MB. Tam możesz zarządzać tym, co chcesz zwrócić.

W każdym razie żądania większe niż 2 GB zawsze zwrócą 404,13 usługi IIS.

Powiązane linki:

Dealing with large files in ASP.NET Web API

Powiązane problemy