För WCF-metadatahämtning i HTTP GET-läge på .NET Framework 4.8.1 konfigurerar du den tidigare metadatabegäran i stället för bara den slutliga SOAP-klienten. Dess skyddade GetWebRequest-hook kan tillämpa en separat hanterad väg:

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

Typerna kommer från System.Net och System.ServiceModel.Description. Bygg den här klienten med den avsedda WebProxy och använd HttpGet-läget för WSDL-URL:en. Lägg proxykontot på det objektet; autentisering mot metadataservern är separat.

Följ importer om rot-WSDL:en lyckas men upplösningen misslyckas senare. Andra WSDL:er och scheman kan använda andra värdar eller protokoll.

Välj motsvarande tillägg för ett annat hämtningsläge. WS-MetadataExchange använder en kanal, vars skapandehook är GetChannelFactory; dess bindnings- och proxyinställningar ersätts inte universellt av en HttpWebRequest-överskuggning.

En standardprogramproxy kan räcka när alla deltagande äldre komponenter ska dela den. Underklassen är för explicit metadataägande inom denna API-familj. Genererade SOAP-anrop behöver fortfarande sin egen runtime-transportkonfiguration. För en BasicHttpBinding-klient, kontrollera ProxyAddress och UseDefaultWebProxy tillsammans.

Relaterade artiklar