Die Anfrage muss den mit Ihrem Proxyhandler erstellten HttpClient verwenden. Ein unabhängiges WebProxy-Objekt anzulegen ändert die Route eines anderen Clients nicht.

using System;
using System.Net;
using System.Net.Http;

var proxy = new WebProxy("http://203.0.113.10:8080")
{
    BypassProxyOnLocal = false
};

using var handler = new HttpClientHandler
{
    Proxy = proxy,
    UseProxy = true
};

using var client = new HttpClient(handler)
{
    Timeout = TimeSpan.FromSeconds(15)
};

using var response = await client.GetAsync("https://example.com/");
Console.WriteLine((int)response.StatusCode);
Console.WriteLine(await response.Content.ReadAsStringAsync());

Ersetzen Sie die Dokumentationsadresse durch einen echten HTTP-Proxy Ihres Dienstes oder aus der HTTP-Proxyliste. Diese Syntax mit Anweisungen auf oberster Ebene passt zu einem modernen C#-Konsolenprojekt; ältere Projekte können die Anweisungen in einer asynchronen Main unterbringen.

Prüfen Sie beide Handlereigenschaften: Proxy wählt den Endpunkt, UseProxy=true aktiviert seine Verwendung. Funktioniert der Endpunkt separat, aber nicht in der Anwendung, stellen Sie sicher, dass kein Code UseProxy deaktiviert und der Aufruf diese Instanz nutzt. Der eigene Handler vermeidet die Abhängigkeit von Prozess- oder Betriebssystemerkennung.

Stellt der Proxybetreiber ein Konto bereit, weisen Sie ein NetworkCredential-Objekt der Eigenschaft WebProxy.Credentials zu. Die Authorization der Website gehört zu einem anderen Hop; ein öffentlicher IP:port-Eintrag liefert keine Standardanmeldedaten. Ein http://-Listener kann HTTPS per Tunnel transportieren; behalten Sie die normale Zielverifikation bei.

Dieses kurze Programm gibt Objekte beim Beenden frei. Für wiederholte Dienstaufrufe folgen Sie den .NET-Empfehlungen zur Clientlebensdauer und behalten Client/Handler für die Arbeitslast, statt pro Anfrage die Verbindungspools neu aufzubauen. Prüfen Sie den Antwortstatus: Auch eine funktionierende Proxyroute kann eine Ablehnung der Website übertragen.

Ähnliche Artikel