Para la recuperación de metadatos de WCF en modo HTTP GET en .NET Framework 4.8.1, configure la solicitud de metadatos anterior en lugar de solo el cliente SOAP final. Su enlace protegido GetWebRequest puede aplicar una ruta gestionada por separado:

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

Los tipos provienen de System.Net y System.ServiceModel.Description. Construya este cliente con el WebProxy previsto y use el modo HttpGet para la URL del WSDL. Coloque la cuenta de proxy en ese objeto; la autenticación del servidor de metadatos es independiente.

Siga las importaciones si el WSDL raíz se resuelve bien pero la resolución falla después. Otros WSDL y esquemas pueden usar hosts o protocolos distintos.

Elija la extensión correspondiente para otro modo de recuperación. WS-MetadataExchange usa un canal, cuyo enlace de creación es GetChannelFactory; su configuración de enlace y de proxy no se sustituye de forma universal con una invalidación de HttpWebRequest.

Un proxy de aplicación predeterminado puede bastar cuando todos los componentes heredados participantes deben compartirlo. La subclase es para una propiedad explícita de los metadatos dentro de esta familia de API. Las invocaciones SOAP generadas siguen necesitando su propia configuración de transporte en tiempo de ejecución. Para un cliente BasicHttpBinding, compruebe ProxyAddress y UseDefaultWebProxy juntos.

Artículos relacionados