2009-05-26 21 views
5

Ho una pagina che richiede alcuni minuti per essere eseguita. Quando imposto lo debug="false" nel tag <compilation /> in web.config, viene visualizzato il messaggio "Richiesta scaduta". errore (e cercare interna/blocchi catch nel mio codice ottenere un "Thread annullato." Errore."Richiesta scaduta." errore durante l'impostazione di debug = "false"

Qual è la correzione per consentire lunghe pagine per l'esecuzione in modalità di produzione? Ha la modalità di debug hanno un timeout infinito?

+0

Sei sicuro bisogno di una pagina che richiede pochi minuti per eseguire? Non è possibile spostare quella funzionalità in un'applicazione della console che si pianifica? – sisve

+0

Ehh ... è accessibile solo tramite un modulo Web per facilità d'uso. È una pagina protetta e un'attività programmata lo colpisce ogni notte. La cosa "giusta" da fare è probabilmente liberare queste attività tramite un servizio di Windows o qualcosa del genere, ma se non è rotto, lavora su qualcosa che potrebbe effettivamente aiutarti a generare entrate :) – JerSchneid

risposta

5

Dovresti solo aumentare il timeout dello script per le esecuzioni di pagine. Il valore predefinito è 90 secondi, quindi se avete bisogno di più tempo, cambiare nel seguente elemento system.web (attributo executionTimeout):

<httpRuntime executionTimeout="seconds" 
      maxRequestLength="kbytes" 
      minFreeThreads="numberOfThreads" 
      minLocalRequestFreeThreads="numberOfThreads" 
      appRequestQueueLimit="numberOfRequests" 
      useFullyQualifiedRedirectUrl="true|false" /> 
+0

Oltre ad aumentare il timeout, potresti anche voglio cercare di rendere la pagina asincrona. Una lunga pagina in esecuzione in modalità sincrona consumerà un thread per la durata. Rendendolo asincrono, si libera quel thread ASP.NET in modo che possa elaborare altre richieste, mentre un thread aggiuntivo viene generato in background per gestire la richiesta di lunga durata. In questi giorni, le pagine ASP.NET asincrone sono piuttosto facili da usare. – jrista

5

è possibile impostare la durata massima per le richieste in web.config:..

<system.web> 
    ... 
    <httpRuntime executionTimeout="600" /> 

Dove executionTimeout specifica il numero massimo di secondi che una richiesta è permesso di eseguire, prima di essere interrotto automaticamente da ASP.NET dettagli possono essere trovato here.

Problemi correlati