За извличане на 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 заедно.

Подобни статии