Для получения метаданных WCF в режиме HTTP GET в .NET Framework 4.8.1 настройте более ранний запрос метаданных, а не только итоговый клиент SOAP. Его защищенный обработчик GetWebRequest может применить отдельно управляемый маршрут:

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

Типы происходят из System.Net и System.ServiceModel.Description. Создайте этот клиент с нужным WebProxy и используйте режим HttpGet для URL-адреса WSDL. Поместите учетную запись прокси в этот объект; проверка подлинности сервера метаданных выполняется отдельно.

Следуйте импортам, если корневой WSDL успешен, но разрешение позже не удается. Другие WSDL и схемы могут использовать другие узлы или протоколы.

Выберите соответствующее расширение для другого режима получения. WS-MetadataExchange использует канал, обработчик создания которого — GetChannelFactory; его параметры привязки и прокси повсеместно не заменяются переопределением HttpWebRequest.

Прокси приложения по умолчанию может быть достаточно, когда все участвующие устаревшие компоненты должны совместно его использовать. Подкласс предназначен для явного владения метаданными в этом семействе API. Созданные вызовы SOAP по-прежнему нуждаются в собственной конфигурации транспорта во время выполнения. Для клиента BasicHttpBinding проверьте ProxyAddress и UseDefaultWebProxy вместе.

Похожие статьи