2011-01-21 25 views
11

Attualmente ho un progetto ASP.NET MVC che ha il caricamento di file e funziona benissimo se l'utente ha una connessione abbastanza buona e il loro file è di dimensioni ragionevoli.ASP.NET MVC Timeout del file di caricamento

Il problema che sto funzionando in è che a volte un utente potrebbe avere una connessione 56k (come possono vivere con essa in questo giorno ed età, non so) o sono il caricamento di un file più grande o una combinazione di il due.

Mi piacerebbe mantenere un piccolo timeout per le pagine normali (90 secondi circa), ma consentire un timeout più ampio per le azioni in cui un utente sta caricando. Questa è solo un'azione, quindi non mi interessa inserire il codice all'interno di quell'azione singolare piuttosto che una soluzione generica.

In definitiva, una soluzione che aumenterebbe automaticamente il timeout se Request.Files.Count> 0 sarebbe il migliore.

+5

Sono in dial-up. Io vivo in Giamaica. –

+0

Che cos'è il timeout? Se non ottieni nulla dal client dopo circa 90 secondi, probabilmente non carichi nulla. – chris

+0

Ricevo continuamente dati, chris, ma l'invio di anche 10 mega su 56k richiederà più di 90 secondi. – ckknight

risposta

8

Non sono sicuro che funzioni in un progetto MVC, ma potresti provare a creare una posizione nel tuo web.config e impostare il timeout di esecuzione per il solo URL di caricamento. Per esempio:

<location path="YourUrl"> 
    <system.web> 
    <httpRuntime executionTimeout="9001"/> 
    </system.web> 
</location> 
+0

Questo funziona. È anche possibile aggiungere maxRequestLength qui (sul tag httpRuntime) se si desidera consentire solo richieste più grandi al gestore di upload. –

+2

il suo timeout di esecuzione è oltre 9000! –

2

Potrebbe essere necessario aumentare il timeout nel web.config:

<httpRuntime executionTimeout="01:00:00" /> 

Ora, questo è superabile nel file web.config sotto il che significa che se si vuole aumentare il timeout solo per lo script upload si potrebbe scrivere un gestore HTTP generico che gestirà i caricamenti e lo metterà nella propria sottocartella con il proprio web.config.

0

Problema possibile: se il suo non è un timeout a causa dell'attività pari a zero, forse il suo qualcosa a che fare con il costruito nel restrizione di dimensione, nella sezione di httpRuntime web.config si potrebbe aggiungere/aumentare maxRequestLength="" a il limite di dimensioni

Problemi correlati