Netzwerk-Timeouts – Festlegen in C#-Beispielen

Netzwerk-Timeouts können auftreten, wenn eine Netzwerkverbindung nicht hergestellt werden kann oder ein Server zu lange braucht, um zu antworten. Wenn eine Zeitüberschreitung im Netzwerk auftritt, kann dies die Funktionalität einer Softwareanwendung beeinträchtigen und eine Reihe von Problemen verursachen. In diesem Artikel wird anhand praktischer Beispiele erläutert, wie Netzwerk-Timeouts in C# eingestellt werden können. Sie finden einfache C#-Beispiele dafür, wie Sie einen benutzerdefinierten Nachrichten-Handler für Netzwerk-Timeouts erstellen können.

Netzwerk-Timeouts

Die Netzwerkzeitüberschreitung bezieht sich auf die Zeitspanne, die ein Client, z. B. eine Softwareanwendung, nach dem Senden einer Anforderung auf eine Antwort von einem Server wartet. Ein Timeout-Wert wird festgelegt, um zu vermeiden, dass unendlich lange auf eine Antwort gewartet wird, falls der Server nicht verfügbar ist oder nicht reagiert.
Ein Netzwerk-Timeout ist ein Zeitlimit für den Abschluss eines Netzwerkvorgangs, wie das Senden einer Anfrage oder das Warten auf eine Antwort. Wenn die Netzwerkoperation die Zeitüberschreitung überschreitet, wird sie als fehlgeschlagen betrachtet. Die Netzwerk-Zeitüberschreitung wirkt sich auf die Leistung und Zuverlässigkeit der Netzwerkkommunikation aus, indem sie die maximale Zeitspanne festlegt, die für den erfolgreichen Abschluss einer Anfrage zur Verfügung steht. Wenn die Zeitüberschreitung erreicht ist, kann der Vorgang abgebrochen werden, was zu einem Fehler oder Ausfall führt. Die Netzwerkzeitüberschreitung ist ein wesentlicher Faktor, der bei der Entwicklung von Netzwerkanwendungen berücksichtigt werden muss, da er die Reaktionsfähigkeit, Geschwindigkeit und Verfügbarkeit der Netzwerkkommunikation beeinflussen kann.

Message Handler für Netzbetriebszeitüberschreitungen

Um die maximale Zeitüberschreitung für Netzwerkoperationen festzulegen, müssen Sie Ihren eigenen Netzwerkanforderungs-Handler definieren und ihn an der Spitze der Warteschlange solcher Handler registrieren. Auf diese Weise werden alle Netzwerkanfragen durch ihn geleitet.
Das folgende Beispiel zeigt, wie man diese Funktionalität nutzen kann. Zunächst erstellen wir unseren eigenen Netzwerkoperations-Handler TimeoutMessageHandler, der das maximale Netzwerk-Timeout auf 1 Sekunde setzt und die Nachricht einfach weiterleitet.

 1// Set custom timeout for network requests in .NET HTML processing
 2
 3// Define the TimeoutMessageHandler class that is derived from the MessageHandler class
 4public class TimeoutMessageHandler : MessageHandler
 5{
 6    public override void Invoke(INetworkOperationContext context)
 7    {
 8        context.Request.Timeout = TimeSpan.FromSeconds(1);
 9        Next(context);
10    }
11}

Im obigen C#-Codeausschnitt definieren wir eine benutzerdefinierte TimeoutMessageHandler-Klasse. Die Klasse erbt von der Klasse MessageHandler und überschreibt deren Methode Invoke(). In der Methode Invoke() wird für die Eigenschaft Request des als Parameter übergebenen Objekts INetworkOperationContext ein Timeout von 1 Sekunde gesetzt. Anschließend wird die Methode Next() aufgerufen, um die Ausführung der Pipeline fortzusetzen. Dieser benutzerdefinierte Message Handler kann einen bestimmten Timeout-Wert für Netzwerkoperationen in einer Anwendung festlegen.

Netzwerk-Timeout zum Öffnen einer HTML-Datei

Bei Netzwerkanfragen ist die Netzwerkzeitüberschreitung ein wichtiger Aspekt, der berücksichtigt werden muss. HTML-Dokumente können Ressourcen enthalten, die sich in der Cloud oder auf einem anderen Server befinden. Manchmal dauern Anfragen an eine entfernte Ressource sehr lange oder werden nicht beantwortet, dann kann das Öffnen eines Dokuments unendlich lange dauern. Wenn Sie eine Zeitüberschreitung für den Vorgang festlegen, vermeiden Sie lange Wartezeiten, aber das Dokument wird möglicherweise ohne einige “problematische” Ressourcen geöffnet.

Hier ist ein Beispiel, wie Sie die Klasse TimeoutMessageHandler verwenden können, um eine Zeitüberschreitung für das Öffnen einer HTML-Datei mit der Aspose.HTML-Bibliothek festzulegen:

 1// Set custom request timeout using a message handler
 2
 3// Create an instance of the Configuration class
 4using Configuration configuration = new Configuration();
 5
 6// Call the INetworkService which contains the functionality for managing network operations
 7INetworkService network = configuration.GetService<INetworkService>();
 8
 9// Add the TimeoutMessageHandler to the top of existing message handler chain
10network.MessageHandlers.Insert(0, new TimeoutMessageHandler());
11
12// Prepare path to a source document file
13string documentPath = Path.Combine(DataDir, "document.html");
14
15// Create an HTML document with a custom configuration
16using HTMLDocument document = new HTMLDocument(documentPath, configuration);

In diesem Beispiel erstellen wir eine Instanz der Klasse TimeoutMessageHandler und fügen sie an den Anfang der Liste der Nachrichten-Handler im Netzwerkdienst. Schließlich erstellen wir eine Instanz der Klasse HTMLDocument und geben den Pfad zur HTML-Datei und das Konfigurationsobjekt an. Die Klasse HTMLDocument wird den Netzwerkdienst aus dem Konfigurationsobjekt verwenden, um die notwendigen Netzwerkanfragen zu stellen.

Netzwerk-Timeout für die HTML-Konvertierung

Schauen wir uns den C#-Code an, der einen Timeout-Wert von 1 Sekunde für Anfragen festlegt, die über die Klasse TimeoutMessageHandler in einer .NET-Anwendung gestellt werden. Das folgende Beispiel zeigt, wie man eine Zeitüberschreitung für eine HTML-Konvertierungsoperation festlegt. Dies hat zur Folge, dass alle Netzwerkoperationen, die während der Konvertierung auftreten und länger als eine Sekunde dauern, unterbrochen werden.

 1// Set request timeout when converting HTML to PDF
 2
 3// Create an instance of the Configuration class
 4using Configuration configuration = new Configuration();
 5
 6// Call the INetworkService which contains the functionality for managing network operations
 7INetworkService network = configuration.GetService<INetworkService>();
 8
 9// Add the TimeoutMessageHandler to the top of existing message handler chain
10network.MessageHandlers.Insert(0, new TimeoutMessageHandler());
11
12// Prepare path to a source document file
13string documentPath = Path.Combine(DataDir, "document.html");
14
15// Prepare a path for converted file saving 
16string savePath = Path.Combine(OutputDir, "document.pdf");
17
18// Convert HTML to PDF with customized configuration
19Converter.ConvertHTML(documentPath, configuration, new PdfSaveOptions(), savePath);

In diesem Beispiel wird der TimeoutMessageHandler zur MessageHandlers-Sammlung des INetworkService hinzugefügt und der Timeout-Wert auf 1 Sekunde gesetzt. Die Klasse HTMLDocument wird dann verwendet, um die HTML-Datei zu laden und die Konvertierung durchzuführen.

Durch die Verwendung der Klasse TimeoutMessageHandler und den richtigen Umgang mit Netzwerk-Timeouts können Sie sicherstellen, dass die Konvertierung von HTML-Dateien für den Benutzer zuverlässig und effizient verläuft.

Sie können die vollständigen Beispiele und Datendateien von GitHub herunterladen.

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.