2008-10-01 6 views
47

Ich mache eine Anfrage von einem UpdatePanel, die mehr als 90 Sekunden dauert. Ich bekomme diese Timeout-Fehler:ASP.NET UpdatePanel Time Out

Microsoft JScript runtime error: Sys.WebForms.PageRequestManagerTimeoutException: The server request timed out.

Weiß jemand, ob es einen Weg gibt, um die Menge der Zeit, bevor die Anrufzeiten zu erhöhen?

Antwort

83

Es ist eine Eigenschaft auf dem Script:

AsyncPostBackTimeout="300" 
+1

Danke. Dies kam gerade in helpoful für mich. – David

+2

wo sollte das hinzugefügt werden? Server-Seite/Client-Seite, würde jede weitere Erklärung sehr geschätzt werden. –

+0

Die doppelte Zeit vor dem Timeout zu verdoppeln, indem AsynchPostBackTimeout = "180" eingestellt wurde, war für meine Lösung großartig. – landsteven

2

Dies kann durch Ändern des ASP-Skript-Timeouts in IIS konfiguriert werden.

Es befindet sich in den Eigenschaften Ihrer Website, virtuelles Verzeichnis, Konfigurationsschaltfläche, dann auf der Registerkarte Optionen.

oder setzen Sie sie, indem Sie die Server.ScriptTimeout-Eigenschaft festlegen.

+0

Server.ScriptTimeout ist für das normale Skript oder für das Async? –

+0

Normales Skript, kein Async-Skript. – Bravax

11

Dieser den Trick (im Grunde nur alle Timeouts zu ignorieren):

<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> 
+0

Ich bekomme den Fehler mit dem obigen Code. 'ReferenceError: Sys ist nicht definiert' –

1

Nun, ich nehme an, dass, wenn Sie nur das wollen würde funktionieren Anforderung, die mit dem Potenzial verworfen wurde, dass sie nie vollständig ausgeführt wurde ...

Fügen Sie dem ScriptManager-Tag eine AsyncPostBackTimeOut-Eigenschaft hinzu, um das Standard-Zeitlimit von 90 auf Sekunden zu ändern etwas vernünftiger für Ihre Anwendung.

Weitere Informationen zum Ändern des Web-Service, der den Anruf erhält, um schneller zu wechseln. 90 Sekunden können auch Unendlichkeit in der Internetzeit sein.

37

In meinem Fall wurde das ScriptManager-Objekt in einer Master-Page-Datei erstellt, die dann mit den Content-Page-Dateien geteilt wurde. So um die ScriptManager.AsyncPostBackTimeout Eigenschaft zu ändern im Inhalt Seite hatte ich das Objekt in der Inhaltsseite des aspx.cs Datei zuzugreifen:

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

Hi @narayan funktioniert das auch für 'RadScriptManager'? –

+0

@NagibMahfuz, habe leider nicht die Möglichkeit, RadScriptManager auszuprobieren, damit ich nicht definitiv antworten kann. Wenn Sie es jemals selbst versuchen, lassen Sie uns wissen, wie es geklappt hat. – narayan

+1

ja es funktioniert auch für 'RadScriptManager'. –

4

Bitte gehen Sie folgendermaßen vor:

Schritt 1: In web.config, set httpRuntime maxRequestLength="1024000" executionTimeout="999999"

Schritt 2: Fügen Sie die folgende Einstellung Ihrer Webseite des Script: AsyncPostBackTimeout ="360000"

dies Ihr Problem lösen wird.

0

Das Problem, mit dem Sie konfrontiert werden, ist, wenn Ihre Anwendung bei einer SQL-Datenbankabfrage ein Zeitlimit erreicht. Es dauert länger als der Standard, um die Ausgabe zurückzugeben. Daher müssen Sie die ConnectionTimeout-Eigenschaft erhöhen.

Sie können es auf verschiedene Weise tun:

  1. Eine Verbindungszeichenfolge hat eine ConnectionTimeout Eigenschaft. Es ist eine Eigenschaft, die die maximale Anzahl von Sekunden bestimmt, die Ihr Code auf eine Verbindung der zu öffnenden Datenbank wartet. Sie können das Verbindungszeitlimit in der Verbindungszeichenfolge in web.config festlegen.

    <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. können Sie AsyncPostBackTimeout="6000" setzen in .aspx Seite

    <asp:ToolkitScriptManager runat="server" AsyncPostBackTimeOut="6000"> 
    </asp:ToolkitScriptManager> 
    
  3. Sie können Timeout in SqlCommand gesetzt, in dem Sie die gespeicherte Prozedur in CS-Datei aufrufen.

    command.CommandTimeout = 30*1000; 
    

Hoffe, Sie haben eine Lösung!