Para a recuperação de metadados do WCF no modo HTTP GET no .NET Framework 4.8.1, configure a requisição de metadados anterior, e não apenas o cliente SOAP final. Seu gancho protegido GetWebRequest pode aplicar uma rota gerenciada separadamente:

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

Os tipos vêm de System.Net e System.ServiceModel.Description. Construa este cliente com o WebProxy pretendido e use o modo HttpGet para a URL do WSDL. Coloque a conta de proxy nesse objeto; a autenticação do servidor de metadados é separada.

Siga as importações se o WSDL raiz funcionar, mas a resolução falhar depois. Outros WSDL e esquemas podem usar hosts ou protocolos diferentes.

Escolha a extensão correspondente para outro modo de recuperação. O WS-MetadataExchange usa um canal, cujo gancho de criação é GetChannelFactory; suas configurações de binding e proxy não são substituídas universalmente por uma substituição de HttpWebRequest.

Um proxy de aplicativo padrão pode bastar quando todos os componentes legados participantes devem compartilhá-lo. A subclasse serve para a propriedade explícita de metadados dentro desta família de API. As chamadas SOAP geradas ainda precisam de sua própria configuração de transporte em tempo de execução. Para um cliente BasicHttpBinding, verifique ProxyAddress e UseDefaultWebProxy juntos.

Artigos relacionados