Controlador de mensajes para filtrar solicitudes de red – ejemplos de C#

El uso de controladores de mensajes es un patrón típico en el desarrollo de software. Los controladores de mensajes se utilizan para interceptar y procesar mensajes en forma de canalización. En este artículo, crearemos controladores de mensajes personalizados que filtren las solicitudes de red y deshabiliten las no deseadas. Encontrará ejemplos sencillos de C# sobre cómo aplicar controladores de mensajes para operaciones de red.

Solicitudes de red – Network Requests

En ingeniería de software, las solicitudes de red se refieren a una aplicación cliente que envía una solicitud a un servidor a través de la red y recibe una respuesta del servidor. Los controladores de mensajes son una forma poderosa de interceptar y procesar estas solicitudes y respuestas de red.
Este artículo considera ejemplos de cómo interceptar solicitudes, bloquear algunas solicitudes de red no deseadas o reemplazar las URL con algún otro valor.

Controlador de mensajes para filtrar solicitudes de red

La biblioteca Aspose.HTML for .NET proporciona una funcionalidad que puede resultar útil en escenarios en los que desea restringir ciertos tipos de solicitudes de red en una aplicación de procesamiento HTML. Por ejemplo, si trabaja con documentos HTML y desea asegurarse de que solo se carguen ciertos tipos de recursos desde fuentes externas. Este código proporciona una forma de filtrar solicitudes de red no deseadas. Configura un NetworkDisabledMessageHandler que solo permite solicitudes con los protocolos “file:”, “about:” o “base64:”. Si la solicitud utiliza cualquier otro protocolo, el controlador lo bloquea.

 1// Define the NetworkDisabledMessageHandler class that is derived from the MessageHandler class
 2public class NetworkDisabledMessageHandler : MessageHandler
 3{
 4    // Override the Invoke() method
 5    public override void Invoke(INetworkOperationContext context)
 6    {
 7        if (context.Request.RequestUri.Protocol == "file:" ||
 8            context.Request.RequestUri.Protocol == "base64:" ||
 9            context.Request.RequestUri.Protocol == "about:")
10            Next(context);
11    }
12}

El fragmento de código C# anterior crea un controlador de mensajes para personalizar el comportamiento de las solicitudes de red según sus protocolos:

Este controlador de mensajes personalizado puede filtrar solicitudes de red en su proyecto o aplicación .NET.

Cómo filtrar solicitudes de red no deseadas

A continuación se muestra un ejemplo de cómo puede utilizar la clase NetworkDisabledMessageHandler para filtrar solicitudes de red no deseadas utilizando la biblioteca Aspose.HTML:

  1. Cree una instancia de la clase Configuration usando el constructor Configuración().
  2. Llame al método GetService<INetworkService>() en el objeto de configuración para recuperar una instancia de la interfaz INetworkService.
  3. Utilice el método Insert() para agregar el controlador de mensajes a la parte superior de la cadena de controladores de mensajes existente. Esto significa que cualquier solicitud de red realizada a través de INetworkService pasará primero por NetworkDisabledMessageHandler.
  4. Cree una instancia de la clase HTMLDocument, pasándole la ruta al archivo HTML y el objeto de configuración.
 1// Create an instance of the Configuration class
 2using var configuration = new Configuration();
 3
 4// Call the INetworkService which contains the functionality for managing network operations
 5var network = configuration.GetService<INetworkService>();
 6
 7// Add the TimeoutMessageHandler to the top of existing message handler chain
 8network.MessageHandlers.Insert(0, new NetworkDisabledMessageHandler());                
 9
10// Prepare path to a source document file
11string documentPath = Path.Combine(DataDir, "document.html");
12
13// Create an HTML document with a custom 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.