Per a l'obtenció de metadades WCF en mode HTTP GET a .NET Framework 4.8.1, configureu la sol·licitud de metadades anterior i no només el client SOAP final. El seu hook protegit GetWebRequest pot aplicar una ruta gestionada per separat:

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

Els tipus provenen de System.Net i System.ServiceModel.Description. Construïu aquest client amb el WebProxy previst i feu servir el mode HttpGet per a l'URL del WSDL. Posa el compte de proxy en aquest objecte; l'autenticació del servidor de metadades és a part.

Seguiu les importacions si el WSDL arrel té èxit però la resolució falla més tard. Altres WSDL i esquemes poden usar amfitrions o protocols diferents.

Trieu l'extensió corresponent per a un altre mode d'obtenció. WS-MetadataExchange usa un canal, el hook de creació del qual és GetChannelFactory; la seva configuració de binding i de proxy no es substitueix universalment amb una sobreescriptura d'HttpWebRequest.

Un proxy d'aplicació per defecte pot ser suficient quan tots els components heretats participants l'han de compartir. La subclasse és per a una propietat explícita de les metadades dins d'aquesta família d'API. Les invocacions SOAP generades encara necessiten la seva pròpia configuració de transport en temps d'execució. Per a un client BasicHttpBinding, comproveu ProxyAddress i UseDefaultWebProxy junts.

Articles relacionats