Pro načítání metadat WCF v režimu HTTP GET na .NET Framework 4.8.1 nakonfigurujte dřívější požadavek na metadata, ne jen konečného klienta SOAP. Jeho chráněný hook GetWebRequest může použít samostatně spravovanou trasu:

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

Typy pocházejí z System.Net a System.ServiceModel.Description. Sestavte tohoto klienta s zamýšleným WebProxy a pro adresu URL WSDL použijte režim HttpGet. Účet proxy vložte na tento objekt; ověřování serveru metadat je oddělené.

Pokud kořenový WSDL uspěje, ale překlad později selže, sledujte importy. Jiné WSDL a schémata mohou používat jiné hostitele nebo protokoly.

Pro jiný režim načítání zvolte odpovídající rozšíření. WS-MetadataExchange používá kanál, jehož hook pro vytvoření je GetChannelFactory; jeho nastavení vazby a proxy se univerzálně nenahrazuje přepsáním HttpWebRequest.

Výchozí proxy aplikace může stačit, když jej mají sdílet všechny zúčastněné starší komponenty. Podtřída slouží k explicitnímu vlastnictví metadat v této rodině API. Generovaná volání SOAP stále potřebují vlastní konfiguraci přenosu za běhu. U klienta BasicHttpBinding zkontrolujte ProxyAddress a UseDefaultWebProxy společně.

Související články