Обработчик сообщений для фильтрации сетевых запросов – C#
Использование обработчиков сообщений – типичная практика разработки программного обеспечения. Обработчики сообщений используются для перехвата и обработки сообщений в конвейерном режиме. В этой статье мы создадим собственные обработчики сообщений, которые фильтруют сетевые запросы и отключают нежелательные. Вы найдете простые примеры C# того, как применять обработчики сообщений для сетевых операций.
Сетевые запросы – Network Requests
В разработке программного обеспечения сетевые запросы относятся к клиентскому приложению, отправляющему запрос серверу по сети и получающему ответ от сервера. Обработчики сообщений – это мощный способ перехвата и обработки сетевых запросов и ответов.
Обработчик сообщений для фильтрации сетевых запросов
Библиотека Aspose.HTML for .NET предоставляет функциональные возможности, которые могут быть полезны в сценариях, когда вы хотите ограничить определенные типы сетевых запросов в приложении обработки HTML. Например, если вы работаете с HTML-документами и хотите, чтобы из внешних источников загружались только определенные типы ресурсов. Для этого следует создать обработчик сообщений, который будет отфильтровать нежелательные сетевые запросы.
Давайте рассмотрим фрагмент кода C#, который использует библиотеку Aspose.HTML for .NET для работы с HTML-документами и сетевыми операциями. Этот код устанавливает NetworkDisabledMessageHandler
, который пропускает только запросы с протоколами file:
, base64:
и about:
. Если запрос использует любой другой протокол, обработчик его блокирует.
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}
Приведенный выше фрагмент кода C# создает обработчик сообщений для настройки поведения сетевых запросов на основе их протоколов:
- Используйте необходимое пространство имен, то есть Aspose.Html.Net.
- Определите собственный класс
NetworkDisabledMessageHandler
, который наследует класс MessageHandler. - Переопределите метод
Invoke() для обработки сетевых операций. Вы можете настроить логику внутри метода Invoke() для обработки сетевых запросов в соответствии с вашими конкретными требованиями. Используйте свойство
RequestUri класса RequestMessage и свойство
Protocol, чтобы проверить, является ли протокол запроса
file:
,base64:
иabout:
. Если это так, код обрабатывает запрос дальше; в противном случае запросы будут автоматически блокироваться.
NetworkDisabledMessageHandler полезен для случаев, когда требуется работать с HTML-документами в среде с ограниченным доступом к сети или когда определённые сетевые ресурсы недоступны или нежелательны. Это может быть необходимо:
- Для безопасности, чтобы избежать внешних запросов к сети.
- Для контроля загрузки данных и экономии ресурсов.
- В средах, где выполнение сетевых запросов ограничено, как, например, в корпоративных или локальных сетях.
Как отфильтровать нежелательные сетевые запросы
Вот пример того, как вы можете использовать класс NetworkDisabledMessageHandler
для фильтрации нежелательных сетевых запросов:
- Создайте экземпляр класса Configuration с помощью конструктора Configuration().
- Вызовите метод GetService<INetworkService>() объекта конфигурации, чтобы получить экземпляр интерфейса INetworkService.
- Используйте метод Insert(), чтобы добавить обработчик сообщения в начало существующей цепочки обработчиков сообщений. Это означает, что любые сетевые запросы, сделанные через INetworkService, сначала будут проходить через
NetworkDisabledMessageHandler
. - Создайте экземпляр класса HTMLDocument, передав ему путь к HTML-файлу и объект конфигурации.
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);
Вы можете скачать полные примеры и файлы данных с GitHub..