Ένα proxy που έχει ρυθμιστεί για έναν ονομασμένο HttpClient δεν ρυθμίζει αυτόματα κάθε client που επιστρέφει το IHttpClientFactory. Κρατήστε το όνομα εγγραφής και το ζητούμενο όνομα μαζί.

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

Στη συνέχεια ανακτήστε αυτή την ονομασμένη ρύθμιση:

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

Το τελικό σημείο είναι ενδεικτικό. Για επιτρεπόμενα αιτήματα δημόσιων υπηρεσιών, η λίστα proxy HTTP παρέχει υποψηφίους για το WebProxy URL του ονομασμένου client. Η δημιουργία του προεπιλεγμένου ανώνυμου client αλλού είναι διαφορετική αναζήτηση, ακόμη και αν και οι δύο client προέρχονται από το ίδιο εγχυόμενο εργοστάσιο.

Ρυθμίστε τη συμπεριφορά proxy σε επίπεδο σύνδεσης στον κύριο handler αντί να τη θεωρείτε κεφαλίδα αιτήματος προορισμού. Το εργοστάσιο μπορεί να διαχειρίζεται τη διάρκεια ζωής των handler ξεχωριστά από τα αντικείμενα HttpClient που επιστρέφει.

Αν η κλήση ανήκει σε τυποποιημένο client ή σε άλλο SDK, ελέγξτε ποια εγγραφή παρέχει το HttpClient του. Ένας σωστά ρυθμισμένος ονομασμένος client που δεν χρησιμοποιείται ποτέ δεν επηρεάζει τη διαδρομή δικτύου αυτού του SDK.

Χρησιμοποιήστε αυτή τη ρύθμιση για σταθερή πολιτική δρομολόγησης. Η αλλαγή ενεργού handler μεταξύ λειτουργιών παραμένει ξεχωριστό πρόβλημα ταυτοχρονισμού και διάρκειας ζωής.

Σχετικά άρθρα