Kun haet WCF-metatietoja HTTP GET -tilassa .NET Framework 4.8.1:ssä, määritä aikaisempi metatietopyyntö eikä vain lopullinen SOAP-asiakas. Sen suojattu GetWebRequest-koukku voi soveltaa erikseen hallinnoitua reittiä:

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

Tyypit tulevat nimiavaruuksista System.Net ja System.ServiceModel.Description. Muodosta tämä asiakas halutulla WebProxyllä ja käytä HttpGet-tilaa WSDL-URL:lle. Aseta välityspalvelimen tili kyseiseen objektiin; metatietopalvelimen todennus on erillinen.

Seuraa tuonteja, jos juuri-WSDL onnistuu mutta selvitys epäonnistuu myöhemmin. Muut WSDL:t ja skeemat voivat käyttää eri isäntiä tai protokollia.

Valitse vastaava laajennus toiselle hakutilalle. WS-MetadataExchange käyttää kanavaa, jonka luontikoukku on GetChannelFactory; sen sidonta- ja välityspalvelinasetuksia ei korvata yleisesti HttpWebRequestin ohituksella.

Sovelluksen oletusvälityspalvelin voi riittää, kun kaikkien osallistuvien vanhojen komponenttien pitäisi jakaa se. Alaluokka on tämän API-perheen metatietojen nimenomaiseen omistajuuteen. Luodut SOAP-kutsut tarvitsevat silti oman ajonaikaisen siirtomäärityksensä. BasicHttpBinding-asiakkaalle tarkista ProxyAddress ja UseDefaultWebProxy yhdessä.

Aiheeseen liittyvät artikkelit