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:
- Utilice el espacio de nombres necesario, que es Aspose.Html.Net.
- Definir una clase personalizada
NetworkDisabledMessageHandler
. Esta clase hereda de la clase MessageHandler y anula su método Invoke() para manejar las operaciones de red. - Puede personalizar la lógica dentro del método Invoke() para manejar solicitudes de red de acuerdo con sus requisitos específicos. Utilice la propiedad RequestUri de la clase RequestMessage y la propiedad Protocol para comprobar si el protocolo de solicitud es “file:”, “base64:” o “about:”. Si es así, el código procesa la solicitud aún más; de lo contrario, las solicitudes se bloquearán automáticamente.
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:
- Cree una instancia de la clase Configuration usando el constructor Configuración().
- Llame al método GetService<INetworkService>() en el objeto de configuración para recuperar una instancia de la interfaz INetworkService.
- 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
. - 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.