Ein für einen benannten HttpClient konfigurierter Proxy konfiguriert nicht automatisch jeden Client, den IHttpClientFactory zurückgibt. Halten Sie den Registrierungsnamen und den angeforderten Namen zusammen.

services.AddHttpClient("via-proxy")
    .ConfigurePrimaryHttpMessageHandler(() => new HttpClientHandler
    {
        Proxy = new WebProxy("http://203.0.113.10:8080"),
        UseProxy = true
    });

Rufen Sie dann diese benannte Konfiguration ab:

var client = factory.CreateClient("via-proxy");

Der Endpunkt ist illustrativ. Für zulässige Anfragen an öffentliche Dienste bietet die HTTP-Proxy-Liste Kandidaten für die WebProxy-URL des benannten Clients. Den standardmäßigen unbenannten Client anderswo zu erstellen, ist ein anderer Lookup, selbst wenn beide Clients aus derselben injizierten Factory stammen.

Konfigurieren Sie Proxyverhalten auf Verbindungsebene am primären Handler, statt es als Anforderungsheader für ein Ziel zu behandeln. Die Factory kann Handler-Lebensdauern getrennt von den HttpClient-Objekten verwalten, die sie zurückgibt.

Wenn ein typisierter Client oder ein anderes SDK den Aufruf besitzt, prüfen Sie, welche Registrierung seinen HttpClient bereitstellt. Ein korrekt konfigurierter benannter Client, der nie verwendet wird, wirkt sich nicht auf den Netzwerkpfad dieses SDK aus.

Verwenden Sie diese Konfiguration für eine stabile Routingrichtlinie. Das Ändern eines aktiven Handlers zwischen Vorgängen bleibt ein separates Nebenläufigkeits- und Lebensdauerproblem.

Ähnliche Artikel