2011-06-22 4 views
13

Mam stronę na mojej stronie ASP.NET, która ładuje pliki. Podjęto próbę zmodyfikowania pliku web.config, aby umożliwić większe przesyłanie. W moim web.config, mam ustawione:asp.net - plik post daje wynik 404 strony mimo, że opublikowany plik jest znacznie poniżej maxRequestLength

<httpRuntime maxRequestLength="2097152" executionTimeout="3600" /> 

Na mojej stronie, gdy próbuję przesłać mniejsze pliki, nie ma problemu ... nawet na 25MB. Jednak, gdy próbuję załadować plik 50 MB, nadal otrzymuję stronę błędu 404.

UWAGA: Mam sterowanie lampą błyskową na innej stronie, która może przesłać prawie 2gb bez problemów przy użyciu tego samego ustawienia web.config. Ten sam wynik na różnych komputerach, ten sam wynik, gdy są publikowane na różnych serwerach internetowych. Mój serwer sieciowy to Windows Server 2008 R2.

Jakieś pomysły przyczyny? Dlaczego flashowanie powinno być w porządku, ale prosta kontrola przesyłania jane ma ten problem?

Odpowiedz

23

Znalazłem odpowiedź. Windows Server 2008 R2 przy użyciu IIS7 (oczywiście), w IIS7, musisz ustawić następujące w pliku web.config (w moim przykładzie, aby zwiększyć limit do 2 GB):

<system.webserver> 
    <security> 
    <requestFiltering> 
     <requestLimits maxAllowedContentLength="2147483648" /> 
    </requestFiltering> 
    </security> 
<system.webserver> 

To działało, kiedy wszystko inne nie. Domyślnie w IIS7 limity przesyłają się do 30 MB, chyba że ustawiono to przesłonięcie.

+1

Dzięki. Dokładnie doświadczony ten sam problem w aplikacji mvc 4 działającej w IIS 7.5. Twoja poprawka zadziałała. Jedyną ostrożnością może być to, że serwer stanie się bardziej podatny na ataki Dos, jeśli jest publiczny. – JimSTAT

1

Element executionTimeout ma zastosowanie tylko wtedy, gdy atrybut debugowania w elemencie kompilacji ma wartość False. (patrz także http://msdn.microsoft.com/en-us/library/e1f13641.aspx)

Wypróbuj go, gdy uruchomisz aplikację w Konfiguracji wydania.

+0

Czy to oznacza, że ​​zostanie zignorowany, jeśli znajduje się w trybie debugowania? Czy oznacza to, że jeśli podniosę liczbę, aby przedłużyć limit czasu, faktyczny czas oczekiwania nadal będzie domyślny? – pearcewg

+0

Tak. Zobacz także [tutaj] (http://stackoverflow.com/questions/2231015/is-there-a-way-to-make-executiontimeout-take-effect-while-debugging) –