Для атрымання метаданых 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 разам.

Падобныя артыкулы