Aby pobierać metadane WCF w trybie HTTP GET w .NET Framework 4.8.1, skonfiguruj wcześniejsze żądanie metadanych, a nie tylko końcowego klienta SOAP. Jego chroniony hak GetWebRequest może zastosować osobno zarządzaną trasę:

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 pochodzą z System.Net i System.ServiceModel.Description. Zbuduj tego klienta z zamierzonym obiektem WebProxy i użyj trybu HttpGet dla adresu URL WSDL. Umieść konto serwera proxy na tym obiekcie; uwierzytelnianie serwera metadanych jest osobne.

Śledź importy, jeśli główny WSDL powiedzie się, ale rozwiązywanie później się nie uda. Inne pliki WSDL i schematy mogą używać innych hostów lub protokołów.

Wybierz odpowiednie rozszerzenie dla innego trybu pobierania. WS-MetadataExchange używa kanału, którego hakiem tworzenia jest GetChannelFactory; jego ustawienia powiązania i serwera proxy nie są powszechnie zastępowane przez zastąpienie HttpWebRequest.

Domyślny serwer proxy aplikacji może wystarczyć, gdy wszystkie uczestniczące starsze składniki powinny go współdzielić. Podklasa służy do jawnego posiadania metadanych w tej rodzinie API. Wygenerowane wywołania SOAP nadal wymagają własnej konfiguracji transportu w czasie wykonywania. W przypadku klienta BasicHttpBinding sprawdź ProxyAddress i UseDefaultWebProxy razem.

Powiązane artykuły