Pour la récupération des métadonnées WCF en mode HTTP GET sur .NET Framework 4.8.1, configurez la requête de métadonnées antérieure, et pas seulement le client SOAP final. Son hook protégé GetWebRequest peut appliquer une route gérée séparément :

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

Les types proviennent de System.Net et System.ServiceModel.Description. Construisez ce client avec le WebProxy prévu et utilisez le mode HttpGet pour l'URL du WSDL. Placez le compte de proxy sur cet objet ; l'authentification auprès du serveur de métadonnées est distincte.

Suivez les importations si le WSDL racine réussit mais que la résolution échoue ensuite. D'autres WSDL et schémas peuvent utiliser des hôtes ou protocoles différents.

Choisissez l'extension correspondante pour un autre mode de récupération. WS-MetadataExchange utilise un canal, dont le hook de création est GetChannelFactory ; ses paramètres de liaison et de proxy ne sont pas remplacés universellement par une substitution de HttpWebRequest.

Un proxy d'application par défaut peut suffire lorsque tous les composants hérités participants doivent le partager. La sous-classe sert à une propriété explicite des métadonnées au sein de cette famille d'API. Les appels SOAP générés ont toujours besoin de leur propre configuration de transport à l'exécution. Pour un client BasicHttpBinding, vérifiez ProxyAddress et UseDefaultWebProxy ensemble.

Articles similaires