2013-03-06 8 views
5

Używam Kontrola przesyłania plików w ASP.Net, a następnie podejście poniżej blogów.Maksymalny rozmiar pliku dozwolony przez przesyłanie plików ASP.NET Kontrola

http://weblogs.asp.net/jgalloway/archive/2008/01/08/large-file-uploads-in-asp-net.aspx

Domyślna 4MB jest ustawiony w machine.config, ale można zastąpić go w was web.config. Na przykład, aby zwiększyć limit przesyłania do 20MB, którą możesz to zrobić:

<system.web> 
    <httpRuntime executionTimeout="240" maxRequestLength="20480" /> 
</system.web> 

Pytanie: Do jakiego poziomu (rozmiar MAX) i może zwiększyć żądanej długości i jaki będzie wpływ na wydajność na miejscu jeśli pozwolimy użytkownikowi na przesyłanie 50-60 MB plików.

+0

Skutkiem wydajności będzie to, że za każdym razem, gdy ktoś załaduje ogromny plik, użyje tak dużej przepustowości ..... – Liam

+0

to około 2 GB dla IIS 7 (ale przy rozważaniu @Liam o przepustowości jest prawdą). Jeśli naprawdę tego potrzebujesz ... lepiej jest zaimplementować inny interfejs do przesyłania plików (na przykład za pomocą POST i niestandardowych rozszerzeń przeglądarki). –

+0

@ Liam, @ Adriano Aplikacja będzie hostowana w intranecie, a zatem dostępna przepustowość jest większa. Ale chcę ograniczyć użytkownika do pewnego limitu, tak jakby IIS angażował się w dostarczanie plików 100MB-200MB, a inni użytkownicy witryny uzyskają niższą wydajność. – Pratik

Odpowiedz

5

"Teoretyczny" poziom maksymalny dla pola maxRequestLength jest maksymalną wartością dla podpisanego 32-bitowego typu danych liczbowych (Int32.MaxValue).

Musisz jednak przetestować przesyłanie, aby zrozumieć swoją wydajność.

EDIT:

Od a Microsoft support ticket:

Teoretycznie maksymalny rozmiar przesyłanych plików jest dość duża. Jednak z powodu monitorowania kondycji ASP.NET, nie można przesyłać bardzo dużych plików w ASP.NET. Proces roboczy ASP.NET ma adres wirtualny o pojemności 2 gigabajtów (GB). Jednak proces roboczy ASP.NET tylko używa nieco więcej niż 1 GB ze względu na fragmentację monitorowania zdrowia i pamięci.

Podczas procesu ładowania program ASP.NET ładuje cały plik w pamięci , zanim użytkownik może zapisać plik na dysku. Dlatego proces może zostać poddany recyklingowi z powodu atrybutu memoryLimit znacznika processModel w pliku Machine.config. Atrybut memoryLimit określa procentową pamięć fizyczną, którą proces roboczy ASP.NET może przedawnić , zanim proces zostanie automatycznie poddany recyklingowi. Recykling zapobiega wyciekowi pamięci z powodu awarii programu ASP.NET lub zatrzymania odpowiedzi .

Ponadto inne czynniki odgrywają rolę w maksymalnym rozmiarze pliku, który można załadować na . Czynniki te obejmują dostępną pamięć, dostępną przestrzeń dysku twardego, szybkość procesora i bieżący ruch sieciowy. Z regularnym ruchem przesyłania plików firma Microsoft zaleca, aby użytkownik używał maksymalnego rozmiaru pliku w zakresie od 10 do 20 megabajtów (MB). Jeśli rzadko przesyłasz pliki, maksymalny rozmiar pliku może wynosić 100 MB.

Uwaga Możesz przesłać pliki większe niż 100 MB w ASP.NET. Firma Microsoft zaleca jednak stosowanie maksymalnych rozmiarów przesyłania plików wymienionych w tym artykule. Aby określić dokładniejsze rozmiary plików, wykonaj testy obciążeniowe na komputerach podobnych do tych, które są podobne do tych, które będą używane w produkcji.

+0

-1, nie, wyrażone ** w KB **, a limit jest znacznie niższy (2 097,152 KB = 2 GB). –

+0

@Adriano Nie wspomniałem nic o kwalifikacji numeru. Jednak dobrze jest wiedzieć, że to KB, zaktualizuję moją odpowiedź. –

+0

@DavinTryon Objaśnienie jest bardzo przydatne w uzasadnianiu ograniczeń kontroli przesyłania plików ASP.net. Wielkie dzięki. – Pratik

Powiązane problemy