Message Handler zum Filtern von Netzwerkanfragen – C# Beispiele

Die Verwendung von Message-Handlern ist ein typisches Muster in der Softwareentwicklung. Message-Handler werden verwendet, um Nachrichten abzufangen und in einer Pipeline zu verarbeiten. In diesem Artikel werden wir benutzerdefinierte Message-Handler erstellen, die Netzwerkanforderungen filtern und unerwünschte deaktivieren. Sie finden einfache C#-Beispiele für die Anwendung von Message-Handlern für Netzwerkoperationen.

Netzwerk-Anfragen

In der Softwaretechnik beziehen sich Netzwerkanfragen auf eine Client-Anwendung, die eine Anfrage über das Netzwerk an einen Server sendet und eine Antwort vom Server erhält. Message-Handler sind eine leistungsfähige Methode, um diese Netzwerkanfragen und -antworten abzufangen und zu verarbeiten.
In diesem Artikel werden Beispiele für das Abfangen von Anfragen, das Blockieren einiger unerwünschter Netzwerkanfragen oder das Ersetzen der URLs durch einen anderen Wert behandelt.

Message Handler zum Filtern von Netzwerkanfragen

Die Aspose.HTML for .NET-Bibliothek bietet Funktionen, die in Szenarien nützlich sein können, in denen Sie bestimmte Arten von Netzwerkanforderungen in einer HTML-Verarbeitungsanwendung einschränken möchten. Zum Beispiel, wenn Sie mit HTML-Dokumenten arbeiten und sicherstellen wollen, dass nur bestimmte Arten von Ressourcen aus externen Quellen geladen werden. Dieser Code bietet eine Möglichkeit, unerwünschte Netzwerkanfragen herauszufiltern. Er richtet einen NetworkDisabledMessageHandler ein, der nur Anfragen mit den Protokollen “file:”, “about:” oder “base64:” zulässt. Wenn die Anfrage ein anderes Protokoll verwendet, blockiert der Handler sie.

 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}

Der obige C#-Codeausschnitt erstellt einen Message-Handler, um das Verhalten von Netzwerkanfragen basierend auf ihren Protokollen anzupassen:

Dieser benutzerdefinierte Message-Handler kann Netzwerkanfragen in Ihrem .NET-Projekt oder Ihrer Anwendung herausfiltern.

So filtern Sie unerwünschte Netzwerkanfragen heraus

Hier ein Beispiel, wie Sie die Klasse NetworkDisabledMessageHandler verwenden können, um unerwünschte Netzwerkanfragen mit Hilfe der Aspose.HTML-Bibliothek herauszufiltern:

  1. Erstellen Sie eine Instanz der Klasse Konfiguration mit dem Konstruktor Konfiguration().
  2. Rufen Sie die Methode GetService<INetworkService>() für das Konfigurationsobjekt auf, um eine Instanz der Schnittstelle INetworkService zu erhalten.
  3. Verwenden Sie die Insert()-Methode, um den Message-Handler an die Spitze der bestehenden Message-Handler-Kette zu setzen. Das bedeutet, dass alle Netzwerkanfragen, die über INetworkService gestellt werden, zuerst NetworkDisabledMessageHandler durchlaufen.
  4. Erstellen Sie eine Instanz der Klasse HTMLDocument und übergeben Sie ihr den Pfad zur HTML-Datei und das Konfigurationsobjekt.
 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);

Sie können die vollständigen Beispiele und Datendateien von GitHub herunterladen.

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.