Обработчик сообщений для фильтрации сетевых запросов – C#

Использование обработчиков сообщений – типичная практика разработки программного обеспечения. Обработчики сообщений используются для перехвата и обработки сообщений в конвейерном режиме. В этой статье мы создадим собственные обработчики сообщений, которые фильтруют сетевые запросы и отключают нежелательные. Вы найдете простые примеры C# того, как применять обработчики сообщений для сетевых операций.

Сетевые запросы – Network Requests

В разработке программного обеспечения сетевые запросы относятся к клиентскому приложению, отправляющему запрос серверу по сети и получающему ответ от сервера. Обработчики сообщений – это мощный способ перехвата и обработки сетевых запросов и ответов.

Обработчик сообщений для фильтрации сетевых запросов

Библиотека Aspose.HTML for .NET предоставляет функциональные возможности, которые могут быть полезны в сценариях, когда вы хотите ограничить определенные типы сетевых запросов в приложении обработки HTML. Например, если вы работаете с HTML-документами и хотите, чтобы из внешних источников загружались только определенные типы ресурсов. Для этого следует создать обработчик сообщений, который будет отфильтровать нежелательные сетевые запросы.

Давайте рассмотрим фрагмент кода C#, который использует библиотеку Aspose.HTML for .NET для работы с HTML-документами и сетевыми операциями. Этот код устанавливает NetworkDisabledMessageHandler, который пропускает только запросы с протоколами file:, base64: и about:. Если запрос использует любой другой протокол, обработчик его блокирует.

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

Приведенный выше фрагмент кода C# создает обработчик сообщений для настройки поведения сетевых запросов на основе их протоколов:

NetworkDisabledMessageHandler полезен для случаев, когда требуется работать с HTML-документами в среде с ограниченным доступом к сети или когда определённые сетевые ресурсы недоступны или нежелательны. Это может быть необходимо:

Как отфильтровать нежелательные сетевые запросы

Вот пример того, как вы можете использовать класс NetworkDisabledMessageHandler для фильтрации нежелательных сетевых запросов:

  1. Создайте экземпляр класса Configuration с помощью конструктора Configuration().
  2. Вызовите метод GetService<INetworkService>() объекта конфигурации, чтобы получить экземпляр интерфейса INetworkService.
  3. Используйте метод Insert(), чтобы добавить обработчик сообщения в начало существующей цепочки обработчиков сообщений. Это означает, что любые сетевые запросы, сделанные через INetworkService, сначала будут проходить через NetworkDisabledMessageHandler.
  4. Создайте экземпляр класса HTMLDocument, передав ему путь к HTML-файлу и объект конфигурации.
 1// Disable network requests when loading HTML
 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 NetworkDisabledMessageHandler());
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);

Вы можете скачать полные примеры и файлы данных с GitHub..

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.