Która ma priorytet, maxRequestLength lub maxAllowedContentLength?

127

Zmieniając maksymalny dozwolony rozmiar pliku do przesłania, natknąłem się na te dwa ustawienia.

W sytem.web masz węzeł wykonawczy http z wartością maxRequestLength . W system.webServer masz RequestLimits z maxAllowedContentLength .

Który teraz ma pierwszeństwo przed innymi? I czy musimy ustawić oba, czy wystarczy ostatni (ten dla IIS7)?

Floris Devriendt
źródło

Odpowiedzi:

196

maxRequestLength wskazuje maksymalny rozmiar żądania obsługiwany przez ASP.NET, natomiast maxAllowedContentLength określa maksymalną długość treści w żądaniu obsługiwanym przez usługi IIS. Musisz więc ustawić oba, aby przesyłać duże pliki: mniejszy „ma pierwszeństwo”.

(Odebrałem to z http://forums.iis.net/t/1169846.aspx - kredyt tam, gdzie jest należny.)

Możesz ustawić oba jako lokalne dla określonej witryny lub nawet folderu w witrynie, edytując odpowiedni plik web.config. Jeśli długość pliku (cóż, żądania) jest mniejsza niż maxAllowedContentLength, ale większa niż maxRequestLength, użytkownik otrzyma standardową stronę błędu (ASPX), jeśli taką masz. Jeśli jest na odwrót, zamiast tego otrzyma stronę błędu usług IIS. Z tego powodu możesz chcieć ustawić maxAllowedContentLength na bardzo dużą wartość (tylko dla tej witryny / folderu), a następnie ustawić wartość ograniczającą maxRequestLength.

Na koniec pamiętaj, że maxRequestLength znajduje się w KB, a maxAllowedContentLength jest w BYTES!

Ed Graham
źródło
Na mojej stronie mam 3 kontrolki przesyłania, gdzie kontrola przesyłania ma limit 50 MB. Więc przesyłam łącznie 150 MB w jednym ujęciu, moja konfiguracja to maxAllowedContentLength = "51200000" & ExecutionTimeout = "1200" & maxRequestLength = "51200". jaką długość powinienem zmienić tutaj. Proszę zasugeruj.
Nirav Vasoya
21

Krótka i słodka odpowiedź jest taka, że ​​pierwszeństwo będzie miało mniejszy z nich. Jedna rada - moim zdaniem wskazane jest ustawienie parametru maxRequestLength na mniejszą z dwóch, ponieważ możesz złapać wyjątek w zdarzeniu Application_Error swojego Global.asax, jeśli zostanie przekroczony. Jeśli przekroczysz wartość maxAllowedContentLength, pierwsze usługi IIS zajmą się nim zamiast ASP.NET, co utrudni obsługę w kodzie.

joelmdev
źródło