IIS Richiesta di Timeout sul lungo ASP.NET operazione

Sto vivendo una richiesta di timeout da IIS quando si esegue un’operazione lunga. Dietro le quinte il mio ASP.NET elaborazione di dati, ma il numero di record in fase di elaborazione è di grandi dimensioni e, quindi, l’operazione richiede molto tempo.

Tuttavia, penso IIS timeout della sessione. È questo un problema con IIS o ASP.NET sessione?

Grazie in anticipo

InformationsquelleAutor Tachi | 2010-09-30

 

4 Replies
  1. 140

    Se si desidera estendere la quantità di tempo consentito per un ASP.NET script da eseguire, quindi, aumentare il Server.ScriptTimeout valore. L’impostazione predefinita è di 90 secondi .NET 1.x e 110 secondi .NET 2.0 e successive.

    Per esempio:

    //Increase script timeout for current page to five minutes
    Server.ScriptTimeout = 300;

    Questo valore può anche essere configurato in web.config file in httpRuntime elemento di configurazione:

    <!-- Increase script timeout to five minutes -->
    <httpRuntime executionTimeout="300" 
      ... other configuration attributes ...
    />

    IIS Richiesta di Timeout sul lungo ASP.NET operazione

    Si prega di notare, secondo il La documentazione MSDN:

    “Questa volta-out si applica solo se l’attributo debug nella compilazione
    elemento è Falso. Pertanto, se l’attributo debug è Vero, avete
    non è necessario impostare l’attributo un valore di grandi dimensioni, al fine di evitare
    l’arresto dell’applicazione durante il debug.”

    Se hai già fatto questo, ma stanno trovando che la sessione è in scadenza, quindi, aumentare il
    ASP.NET HttpSessionState.Timeout valore:

    Per esempio:

    //Increase session timeout to thirty minutes
    Session.Timeout = 30;

    Questo valore può anche essere configurato in web.config file in sessionState elemento di configurazione:

    <configuration>
      <system.web>
        <sessionState 
          mode="InProc"
          cookieless="true"
          timeout="30" />
      </system.web>
    </configuration>

    Se il tuo script è di prendere alcuni minuti per eseguire, e ci sono molti utenti simultanei quindi prendere in considerazione di cambiare pagina per un Pagina Asincrona. Ciò consentirà di aumentare la scalabilità dell’applicazione.

    L’altra alternativa, se si dispone di privilegi di amministratore per il server, è quello di considerare questa lunga operazione in esecuzione come un candidato per l’attuazione di una pianificata attività o di un servizio di windows.

    • FYI httpRuntime executionTimeout è espresso in secondi e non in maiuscolo T
    • È anche importante notare che la modalità di debug essere impostato a false, in modo che questo valore di timeout per essere utilizzato: <sistema.web><compilation debug=”false” targetFramework=”4.0″/></sistema.web>
    • se puoi indicami la documentazione che poi sarei felice di includere tale nella risposta, o si potrebbe modificare la mia risposta direttamente. Ta.
    • Di Default executionTimeout valore è di 110 secondi.
  2. 20

    Grande ed esaustiva answerby @Kev!

    Dal momento che ho fatto lungo trasformazione solo in una pagina di amministrazione in un WebForms applicazione che ho usato l’opzione di codice. Ma anche per permettere una temporanea correzione rapida sulla produzione ho usato la config versione in <location> tag nel web.config. In questo modo il mio admin/pagina di elaborazione avuto abbastanza tempo, mentre le pagine per gli utenti finali e ad mantenuto il loro old time out comportamento.

    Di seguito ho dato la config per voi Googler che richiedono le stesse quick fix. È ovviamente necessario utilizzare altri valori che la mia ‘di 4 ore’ esempio, ma FARE di notare che la sessione timeOut è in pochi minuti, mentre la richiesta executionTimeout è in pochi secondi!

    E – dal momento che è il 2015, già per un NON – quickfix si dovrebbe usare .Net 4.5 s async/await ora, se possibile, invece di .NET 2.0 ASYNC pagina che era lo stato dell’arte quando KEV risposto nel 2010 :).

    <configuration>
        ... 
        <compilation debug="false" ...>
        ... other stuff ..
    
        <location path="~/Admin/SomePage.aspx">
            <system.web>
                <sessionState timeout="240" />
                <httpRuntime executionTimeout="14400" />
            </system.web>
        </location>
        ...
    </configuration>
    • Ho incluso la “posizione” snippet nel mio web.config ma non funziona. Sto usando “executionTimeout” solo, non ho bisogno di “sessionState”. Devo configurare qualcos’altro. Sto usando NET 4.0. Se io uso “httpRuntime” direttamente nel sistema”.web”, si applica il time out correttamente in tutte le pagine.
  3. 8

    Sto postando questo qui, perché ho passato tipo 3 e 4 ore su di esso, e ho trovato solo risposte come quelle di cui sopra, che dire non aggiungere il executionTime, ma non risolve il problema nel caso in cui si utilizza ASP .NET Core. Per esso, questo dovrebbe funzionare:

    Al web.file di configurazione, aggiungere il requestTimeout attributo a aspNetCore nodo.

    <system.webServer>
      <aspNetCore requestTimeout="00:10:00" ... (other configs goes here) />
    </system.webServer>

    In questo esempio, sto impostando il valore per 10 minuti.

    Di riferimento: https://docs.microsoft.com/en-us/aspnet/core/hosting/aspnet-core-module#configuring-the-asp-net-core-module

  4. -7

    Rimuovere ~ carattere in posizione
    così

    path="~/Admin/SomePage.aspx"

    diventa

    path="Admin/SomePage.aspx"
    • Non rispondere alla domanda

Lascia un commento