2010-10-23 17 views
7

Ho provato a impostare l'esecuzione Timeout in web.config per un'applicazione asp.net mvc. executionTimeout non funziona su asp.net mvc

<location path="Home/Index"> 
    <system.web> 
     <httpRuntime executionTimeout="5"/> 
    </system.web> 
    </location> 

tutte le macchine della Thread.sleep in azione Indice

public ActionResult Index() 
     { 
      Thread.Sleep(30000);    
      return View(); 
     } 

anche, ho impostato il debug di complilation a "false". dopo l'azione, trascorre circa 30 secondi e l'eccezione "timeout della richiesta" non viene espulsa e la visualizzazione è stata resa correttamente.

qualcuno sa come rendere l'esecuzione Timeout per lavorare in asp.net mvc?

+0

possibile duplicato del [ASP.NET MVC e httpRuntime executionTimeout] (http://stackoverflow.com/questions/492346/asp-net-mvc-and-httpruntime-executiontimeout) –

risposta

4

È necessario soddisfare il seguente:

  1. nome di dominio non è localhost (per testare il timeout si dovrebbe usare "YourComputerName" invece di "localhost").
  2. Il progetto è compilato in modalità di rilascio.
  3. <compilation debug="false">

Poi anche, pensare a questo:

Internamente ASP.NET utilizza un timer per invocare il processo di cancellazione richiesta. Questo timer viene attivato una volta ogni 15 secondi, quindi se lo executionTimeout è impostato su 3 secondi, in realtà la richiesta può scadere in qualsiasi momento tra 3 secondi e 18 secondi.

Quando si attiva il timer, viene utilizzata una discussione dal ThreadPool per verificare tutte le richieste. Quelli scaduti vengono inviati a ThreadAbortException chiamando Abort sul thread che esegue la richiesta.

Nota: tenere presente che ThreadAbortException può essere osservato solo dal codice gestito. Quindi se il thread sta chiamando alcune funzioni non gestite, il thread non verrà interrotto e pertanto il timeout non verrà applicato fino a quando l'esecuzione non tornerà nel mondo gestito. Questo può essere un ritardo arbitrario a seconda di cosa fa quel codice non gestito.

Per saperne di più: http://consultantpoint.wordpress.com/2012/09/07/how-the-execution-timeout-is-managed-in-asp-net/

Problemi correlati