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 за WSDL URL. Поставете прокси акаунта върху този обект; удостоверяването на сървъра за метаданни е отделно.
Следвайте импортите, ако кореновият WSDL успее, но разрешаването се провали по-късно. Други WSDL и схеми могат да използват различни хостове или протоколи.
Изберете съответното разширение за друг режим на извличане. WS-MetadataExchange използва канал, чиято кука за създаване е GetChannelFactory; неговите настройки за binding и прокси не се заменят универсално от препокриване на HttpWebRequest.
Прокси по подразбиране на приложението може да е достатъчно, когато всички участващи стари компоненти трябва да го споделят. Подкласът е за явно владение на метаданни в това API семейство. Генерираните SOAP извиквания все още се нуждаят от собствена конфигурация на транспорта по време на изпълнение. За клиент BasicHttpBinding проверете ProxyAddress и UseDefaultWebProxy заедно.