Voor WCF-metadata-ophalen in HTTP GET-modus op .NET Framework 4.8.1 configureert u het eerdere metadataverzoek in plaats van alleen de uiteindelijke SOAP-client. De beschermde GetWebRequest-hook kan een afzonderlijk beheerde route toepassen:

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;
    }
}

De typen komen uit System.Net en System.ServiceModel.Description. Bouw deze client met de bedoelde WebProxy en gebruik de HttpGet-modus voor de WSDL-URL. Zet het proxyaccount op dat object; authenticatie bij de metadataserver staat daar los van.

Volg imports als het root-WSDL slaagt maar de resolutie later mislukt. Andere WSDL's en schema's kunnen andere hosts of protocollen gebruiken.

Kies de bijbehorende extensie voor een andere ophaalmodus. WS-MetadataExchange gebruikt een kanaal, waarvan de aanmaakhook GetChannelFactory is; de binding- en proxyinstellingen ervan worden niet universeel vervangen door een HttpWebRequest-overschrijving.

Een standaardtoepassingsproxy kan volstaan wanneer alle deelnemende legacy-componenten deze moeten delen. De subklasse is voor expliciet metadata-eigenaarschap binnen deze API-familie. Gegenereerde SOAP-aanroepen hebben nog steeds hun eigen runtime-transportconfiguratie nodig. Controleer voor een BasicHttpBinding-client ProxyAddress en UseDefaultWebProxy samen.

Gerelateerde artikelen