Na načítavanie metadát WCF v režime HTTP GET v .NET Framework 4.8.1 nakonfigurujte skorší request na metadáta, nielen konečného klienta SOAP. Jeho chránený hook GetWebRequest môže použiť samostatne spravovanú 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ádzajú z System.Net a System.ServiceModel.Description. Zostavte tohto klienta so zamýšľaným WebProxy a pre URL WSDL použite režim HttpGet. Účet proxy vložte na ten objekt; overovanie servera metadát je oddelené.

Sledujte importy, ak koreňový WSDL uspeje, ale rozlíšenie neskôr zlyhá. Iné WSDL a schémy môžu používať iné hostiteľe alebo protokoly.

Pre iný režim načítavania vyberte zodpovedajúce rozšírenie. WS-MetadataExchange používa kanál, ktorého hook na vytvorenie je GetChannelFactory; jeho nastavenia väzby a proxy sa univerzálne nenahrádzajú prepisom HttpWebRequest.

Predvolený proxy aplikácie môže stačiť, keď ho majú zdieľať všetky zúčastnené staršie komponenty. Podtrieda slúži na explicitné vlastníctvo metadát v tejto rodine API. Vygenerované volania SOAP stále potrebujú vlastnú konfiguráciu prenosu za behu. Pri klientovi BasicHttpBinding skontrolujte ProxyAddress a UseDefaultWebProxy spolu.

Súvisiace články