Domanda

Sto facendo una richiesta da un UpdatePanel che richiede più di 90 secondi. Ricevo questo errore di timeout:

  

Errore di runtime di Microsoft JScript:   Sys.WebForms.PageRequestManagerTimeoutException: la richiesta del server   scaduto.

Qualcuno sa se esiste un modo per aumentare la quantità di tempo prima del timeout della chiamata?

È stato utile?

Soluzione

Esiste una proprietà su ScriptManager:

AsyncPostBackTimeout="300"

Altri suggerimenti

Nel mio caso l'oggetto ScriptManager è stato creato in un file Pagina master che è stato quindi condiviso con i file Pagina contenuto. Quindi, per modificare la proprietà ScriptManager.AsyncPostBackTimeout nella Pagina contenuto, ho dovuto accedere all'oggetto nel file aspx.cs della Pagina contenuto:

protected void Page_Load(object sender, EventArgs e)
{
     . . . 
     ScriptManager _scriptMan = ScriptManager.GetCurrent(this);
     _scriptMan.AsyncPostBackTimeout = 36000;
}

Questo ha funzionato (praticamente ignorando tutti i timeout):

<script type="text/javascript"> 
        Sys.WebForms.PageRequestManager.getInstance().add_endRequest(function (sender, args) { 
            if (args.get_error() && args.get_error().name === 'Sys.WebForms.PageRequestManagerTimeoutException') { 
                            args.set_errorHandled(true); 
            } 
        }); 
    </script> 

Segui i passaggi seguenti:

Passaggio 1: in web.config , imposta httpRuntime maxRequestLength = " 1024000 " executionTimeout = " 999999 "

Passaggio 2: aggiungi le seguenti impostazioni allo ScriptManager della tua pagina web: AsyncPostBackTimeout = " 360000 "

Questo risolverà il tuo problema.

Ciò potrebbe essere configurabile modificando il timeout dello script ASP in IIS.

Si trova nelle proprietà del tuo sito web, directory virtuale, pulsante di configurazione, quindi nella scheda opzioni.

o impostarlo impostando la proprietà Server.ScriptTimeout.

Beh, suppongo che funzionerebbe se si desidera che la richiesta venga eliminata con il potenziale che non sia mai stata eseguita completamente ...

Aggiungi una proprietà AsyncPostBackTimeOut al tag ScriptManager per modificare il timeout predefinito da 90 secondi a qualcosa di più ragionevole per la tua applicazione.

Inoltre, cerca di cambiare il servizio web che riceve la chiamata per spostarti più velocemente. 90 secondi potrebbero anche essere infiniti nel tempo di Internet.

Il problema che si presenta è quando l'applicazione si avvia in un timeout su una query del database SQL. Ci vuole più tempo rispetto al valore predefinito per restituire l'output. Quindi è necessario aumentare la proprietà ConnectionTimeout.

Puoi farlo in diversi modi:

  1. Una stringa di connessione ha una proprietà ConnectionTimeout . È una proprietà che determina il numero massimo di secondi in cui il codice attenderà l'apertura di una connessione al database. È possibile impostare il timeout della connessione nella sezione della stringa di connessione in web.config .

    <connectionstrings>
        <add name="ConnectionString" 
             connectionstring="Database=UKTST1;Server=BRESAWN;uid="      system.data.sqlclient="/><br mode=" hold=" /><br mode=" html="> <asp:ToolkitScriptManager runat=" server=" AsyncPostBackTimeOut=" 6000="><br mode=">
        </add>
    </connectionstrings>
    
  2. Puoi inserire AsyncPostBackTimeout = " 6000 " nella pagina .aspx

    <asp:ToolkitScriptManager runat="server" AsyncPostBackTimeOut="6000">
    </asp:ToolkitScriptManager>
    
  3. Puoi impostare il timeout in SqlCommand , dove stai chiamando la procedura memorizzata nel file .cs.

    command.CommandTimeout = 30*1000;
    

Spero che tu abbia una soluzione!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top