Für den WCF-Metadatenabruf im HTTP GET-Modus unter .NET Framework 4.8.1 konfigurieren Sie die frühere Metadatenanforderung und nicht nur den späteren SOAP-Client. Der geschützte GetWebRequest-Hook kann eine separat verwaltete Route anwenden:

class RoutedMetadataClient : MetadataExchangeClient
{
    private readonly IWebProxy route;

    public RoutedMetadataClient(IWebProxy route)
    {
        this.route = route;
    }

    protected override HttpWebRequest GetWebRequest(
        Uri location, string dialect, string identifier)
    {
        HttpWebRequest request =
            base.GetWebRequest(location, dialect, identifier);
        request.Proxy = route;
        return request;
    }
}

Die Typen stammen aus System.Net und System.ServiceModel.Description. Erstellen Sie diesen Client mit dem vorgesehenen WebProxy, und verwenden Sie den HttpGet-Modus für die WSDL-URL. Legen Sie das Proxykonto auf diesem Objekt ab; die Authentifizierung am Metadatenserver ist getrennt.

Folgen Sie Importen, wenn das Stamm-WSDL erfolgreich ist, die Auflösung aber später fehlschlägt. Andere WSDLs und Schemas können andere Hosts oder Protokolle verwenden.

Wählen Sie für einen anderen Abrufmodus die entsprechende Erweiterung. WS-MetadataExchange verwendet einen Kanal, dessen Erstellungshook GetChannelFactory ist; seine Bindungs- und Proxy-Einstellungen werden nicht generell durch eine HttpWebRequest-Überschreibung ersetzt.

Ein Standardanwendungsproxy kann ausreichen, wenn alle beteiligten Legacy-Komponenten ihn gemeinsam nutzen sollen. Die Unterklasse dient der expliziten Metadatenzuständigkeit innerhalb dieser API-Familie. Generierte SOAP-Aufrufe benötigen weiterhin ihre eigene Laufzeittransportkonfiguration. Prüfen Sie bei einem BasicHttpBinding-Client ProxyAddress und UseDefaultWebProxy zusammen.

Ähnliche Artikel