Tiempo de ejecución de solicitud web – ejemplo de C#

En este artículo, encontrará un ejemplo sencillo de cómo crear un controlador de mensajes personalizado para el registro del tiempo de ejecución de una solicitud web.

A veces, para optimizar el rendimiento, es posible que necesite conocer el tiempo de ejecución de la solicitud web. Por ejemplo, desea saber cuánto tiempo se tarda en leer un archivo en el sistema de archivos o descargar datos desde un servidor remoto.

Controlador de mensajes para registrar el tiempo de carga del archivo

Creación de un TimeLoggerMessageHandler para un registro del tiempo de ejecución de una solicitud web

El siguiente fragmento de código muestra cómo crear un TimeLoggerMessageHandler para registrar el tiempo necesario para leer un archivo del sistema de archivos.

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

Utilice la clase Stopwatch en el espacio de nombres System.Diagnostics para medir con precisión el tiempo que lleva ejecutar la solicitud web. El método StartNew() comienza a registrar el tiempo para completar la solicitud web hasta que se llama al método Stop().

Agregar TimeLoggerMessageHandler a la canalización

El constructor Configuration() inicializa una instancia de la clase Configuration. Una vez creada la configuración, se invocan los métodos GetService<INetworkService>() y MessageHandlers.Insert(). El método Insert() agrega TimeLoggerMessageHandler en el primer lugar de la colección de controladores de mensajes.

Utilice el constructor HTMLDocument(address, configuration) para inicializar un documento HTML e implementar el ejemplo para registrar el tiempo de carga del documento.

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

Puede descargar los ejemplos completos y los archivos de datos desde GitHub.

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.