WCF в .NET Framework: настройки прокси для метаданных HTTP GET
Настройте устаревший путь получения метаданных WCF, включая HTTP-импорты, отдельно от итогового клиента службы SOAP.
Для получения метаданных 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 вместе.