it-swarm.com.de

ASP.NET UpdatePanel-Zeitüberschreitung

Ich mache eine Anfrage von einer UpdatePanel, die mehr als 90 Sekunden dauert. Ich erhalte diesen Timeout-Fehler:

Laufzeitfehler von Microsoft JScript: Sys.WebForms.PageRequestManagerTimeoutException: Die Serveranforderung Zeitüberschreitung.

Weiß jemand, ob es eine Möglichkeit gibt, die Zeitspanne vor dem Anruf zu verlängern?

51
ctrlShiftBryan

Es gibt eine Eigenschaft im ScriptManager:

AsyncPostBackTimeout="300"
87
CodeRedick

In meinem Fall wurde das ScriptManager-Objekt in einer Masterseitendatei erstellt, die dann mit den Inhaltsseitendateien gemeinsam genutzt wurde. Um die ScriptManager.AsyncPostBackTimeout -Eigenschaft auf der Inhaltsseite zu ändern, musste ich auf das Objekt in der Datei aspx.cs der Inhaltsseite zugreifen:

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

Dies hat den Trick bewältigt (im Wesentlichen ignoriert man alle Timeouts):

<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> 
11
ctrlShiftBryan

Bitte folgen Sie den Schritten unten:

Schritt 1: In web.config setzen Sie httpRuntime maxRequestLength="1024000" executionTimeout="999999"

Schritt 2: Fügen Sie dem ScriptManager Ihrer Webseite die folgende Einstellung hinzu: AsyncPostBackTimeout ="360000"

Dies löst Ihr Problem.

7
rajalingam

Dies kann durch Ändern des Skriptzeitlimits ASP in IIS konfiguriert werden.

Es befindet sich in den Eigenschaften Ihrer Website, im virtuellen Verzeichnis, in der Konfigurationsschaltfläche und dann auf der Registerkarte "Optionen".

oder legen Sie es fest, indem Sie die Server.ScriptTimeout-Eigenschaft festlegen.

2
Bravax

Nun, ich denke, das würde funktionieren, wenn Sie wollen, dass die Anfrage mit dem Potenzial weggeworfen wird, das sie niemals vollständig ausgeführt hat ...

Fügen Sie dem ScriptManager-Tag eine AsyncPostBackTimeOut-Eigenschaft hinzu, um das Standardzeitlimit von 90 Sekunden auf einen für Ihre Anwendung angemesseneren Wert zu ändern.

Weitere Informationen zum Ändern des Webdiensts, der den Anruf empfängt, können Sie schneller abwickeln. 90 Sekunden können in der Internetzeit ebenso unendlich sein.

1
NotMe

Das Problem, mit dem Sie konfrontiert sind, ist, wenn Ihre Anwendung in einer SQL-Datenbankabfrage ein Timeout ausführt. Es dauert länger als die Standardeinstellung, um die Ausgabe zurückzugeben. Sie müssen also die ConnectionTimeout-Eigenschaft erhöhen.

Sie können es auf verschiedene Arten tun:

  1. Eine Verbindungszeichenfolge hat eine ConnectionTimeout-Eigenschaft. Diese Eigenschaft bestimmt die maximale Anzahl von Sekunden, die Ihr Code auf das Öffnen einer Verbindung der Datenbank wartet. Sie können das Verbindungszeitlimit im Abschnitt für Verbindungszeichenfolgen in web.config einstellen.

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

    <asp:ToolkitScriptManager runat="server" AsyncPostBackTimeOut="6000">
    </asp:ToolkitScriptManager>
    
  3. Sie können das Zeitlimit in SqlCommand einstellen, wobei Sie die gespeicherte Prozedur in der CS-Datei aufrufen.

    command.CommandTimeout = 30*1000;
    

Hoffe du hast eine Lösung!

0
Pradeep atkari