Ausführungszeit von Webanfragen – C#-Beispiel

In diesem Artikel finden Sie ein einfaches Beispiel dafür, wie Sie einen benutzerdefinierten Message-Handler für die Protokollierung der Ausführungszeit einer Web-Anfrage erstellen.

Um die Leistung zu optimieren, müssen Sie manchmal die Ausführungszeit von Webanfragen herausfinden. Sie möchten zum Beispiel wissen, wie viel Zeit das Lesen einer Datei im Dateisystem oder das Herunterladen von Daten von einem Remote-Server in Anspruch nimmt.

Message Handler für die Protokollierung des Zeitpunkts des Dateiladens

Erstellen eines TimeLoggerMessageHandlers für die Protokollierung der Ausführungszeit einer Webanfrage

Der folgende Codeausschnitt zeigt, wie man einen TimeLoggerMessageHandler erstellt, um die Zeit zu protokollieren, die für das Lesen einer Datei aus dem Dateisystem benötigt wird.

 1// Log request time with custom C# message handler
 2
 3// Define the TimeLoggerMessageHandler class that is derived from the MessageHandler class
 4public class TimeLoggerMessageHandler : MessageHandler
 5{
 6    // Override the Invoke() method
 7    public override void Invoke(INetworkOperationContext context)
 8    {
 9        // Start the stopwatch
10        Stopwatch stopwatch = Stopwatch.StartNew();
11
12        // Invoke the next message handler in the chain
13        Next(context);
14
15        // Stop the stopwatch
16        stopwatch.Stop();
17
18        // Print the result
19        Debug.WriteLine("Request: " + context.Request.RequestUri);
20        Debug.WriteLine("Time: " + stopwatch.ElapsedMilliseconds + "ms");
21    }
22}

Verwenden Sie die Klasse Stopwatch im System.Diagnostics Namespace, um die Zeit für die Ausführung der Web-Anforderung genau zu messen. Die Methode StartNew() beginnt mit der Aufzeichnung der Zeit für die Fertigstellung der Webanforderung, bis die Methode Stop() aufgerufen wird.

Hinzufügen des TimeLoggerMessageHandlers zur Pipeline

Der Konstruktor Configuration() initialisiert eine Instanz der Klasse Configuration. Nachdem die Konfiguration erstellt wurde, werden die Methoden GetService <INetworkService>() und MessageHandlers.Insert() aufgerufen. Die Methode Insert() fügt den TimeLoggerMessageHandler an erster Stelle in die Sammlung der MessageHandler ein.

Verwenden Sie den Konstruktor HTMLDocument(address, configuration), um ein HTML-Dokument zu initialisieren und das Beispiel für die Protokollierung der Ladezeit des Dokuments zu implementieren.

 1// Track HTML load time in C# using a custom network message handler
 2
 3// Create an instance of the Configuration class
 4using Configuration configuration = new Configuration();
 5
 6// Add the TimeLoggerMessageHandler to the chain of existing message handlers
 7INetworkService service = configuration.GetService<INetworkService>();
 8MessageHandlerCollection handlers = service.MessageHandlers;
 9           
10handlers.Insert(0, new TimeLoggerMessageHandler());
11
12// Prepare path to a source document file
13string documentPath = Path.Combine(DataDir, "input.htm");
14
15// Initialize an HTML document with specified configuration
16using HTMLDocument document = new HTMLDocument(documentPath, configuration);

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.