Wie kann ein langsames Internet auf der Client-Seite ein Grund für die Server-Timeout-Ausnahme in asp.net sein?

9

Ich habe eine .NET-Anwendung gestartet und ausgeführt.

Wir hatten gestern eine schwankende Verbindung. Beim Testen in solchen Szenarien haben wir mehrere Server-Timeout-Ausnahme-E-Mails wie unten erhalten.

Server-Zeitüberschreitung

%Vor%

WICHTIG: Die oben genannte Ausnahme ist beim Ausführen eines Ajax-Posts durch eine Schaltfläche aufgetreten, die im Aktualisierungsfenster platziert wurde.

Meine Frage hier ist, warum würde ein langsames Internet auf der Client-Seite solche Server-Timeout-Ausnahme auslösen?

Ist die Server-Timeout-Ausnahme nicht auf Fälle zurückzuführen, in denen der Server die Anforderung in der zugrunde liegenden Zeitangabe in der HttpRuntime-Einstellung nicht ausführen kann? Dies kann auf eine langwierige Operation oder eine lange Datenbankausführung zurückzuführen sein, die länger dauert als die in der Einstellung unter HttpRuntime angegebene Zeit.

Wenn der Server wegen des fluktuierenden Internets der Clients keine Verbindung mit dem Client herstellen kann, würde die Ausnahme "Client Disconnected" ausgelöst, die wir gestern ausgeführt haben. Aber ich bin nicht in der Lage, den Grund für diese Server-Timeout-Ausnahme abzuschließen.

Ich weiß bereits, dass eine Erhöhung des Ausführungstimeouts das Problem beheben wird, aber ich muss eine technische Erklärung für den Grund liefern, warum eine solche Ausnahme von Server Timeout ausgelöst wurde.

Meine beste Vermutung ist hier, dass die Ajax-Anfrage eine kontinuierliche Kommunikation mit dem Server für die Ausführung des einzelnen Anforderungsservers durchführen würde und eine Zeitüberschreitungsausnahme auslösen würde, wenn sie aufgrund des schlechten Internets des Kunden einige erforderliche Kommunikationsnachrichten nicht erhält. Ich habe über das Internet nach dem gleichen gesucht, um meine Vermutung zu unterstützen, aber vergeblich.

Um auch Details zur Umgebung bereitzustellen, gibt es einen Lastenausgleich, der die Anfrage bedient.

Jede Hilfe würde sehr geschätzt werden.

    
Dinesh Prajapati 26.05.2017, 11:18
quelle

2 Antworten

4

Es liegt daran, dass die Verbindung von Client zu Server langsam ist. Wenn also der Server (oder Client) Daten an diesen Server sendet, kann die Verbindung damit nicht umgehen, daher erhalten Sie timeout Fehler, weil die Daten nicht in definierter Zeit übertragen werden können.

Sie schreiben auch, dass dies durch das Senden einer Ajax-Anfrage verursacht wird. Versuchen Sie vielleicht, execusion timeout in der Web-Konfigurationsdatei (web.config) zu erhöhen:

%Vor%

Weitere Informationen zu executionTimeout finden Sie hier und hier über Ajax-Anfragen .

    
Samuel Tulach 06.06.2017 19:20
quelle
0

Erstens: Ich denke, die Ursache dieses Fehlers liegt in der Ausführungszeit, die für Ihre Anwendungsanforderung erforderlich ist. Die Verbindung mit dem Remote-Server überschreitet den derzeit festgelegten Zeitüberschreitungswert für die ASP.NET-Anfrageausführung. Wie im MSDN-Ausnahmedokument , der Standardwert ist auf 110 Sekunden eingestellt, da es wie folgt aussieht:

  

Die ExecutionTimeout-Eigenschaft gibt die maximale Anzahl von Sekunden an   Eine Anfrage kann ausgeführt werden, bevor sie automatisch heruntergefahren wird   von ASP.NET.

Dies beruht auf Fehlerdetails mit dem Ereigniscode 3001, weil während des Zeitlimits für eine Anforderung keine Antwort empfangen wurde. Sie können den fehlgeschlagenen Request-Mechanismus für die IIS-Fehlersuche verwenden, um das genaue Problem wie eine schlechte Leistung / Deadlocks beim Ausführen von Aufrufen von Ihrer ASP.NET-Anwendung herauszufinden.

Zweitens, hängt es nicht mit dem Internetkonnektivitätsproblem des Benutzers zusammen. Andernfalls erhalten Sie eine Ausnahme mit Status wie "Verbindung geschlossen" oder "Bei lebendigem Leben bleiben bleiben". Sehen Sie diesen Artikel für Details. Der Browser wartet 60 Minuten (das ist ein sehr langer Zeitraum, in dem der Server keine Anfrage beantwortet) auf die Antwort des Servers.

Und in jedem Fall, wenn der Browser eine Anfrage abbricht, wird der Socket geschlossen und Sie erhalten eine Fehlerseite vom Browser. Du bekommst nichts, was mit dem Server-Ende zu tun hat.

    
111 13.06.2017 12:28
quelle

Tags und Links