برای بازیابی فراداده 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 موردنظر بسازید و برای نشانی WSDL از حالت HttpGet استفاده کنید. حساب پروکسی را روی همان شیء قرار دهید؛ احراز هویت سرور فراداده جداست.

اگر WSDL ریشه موفق شد اما حل‌وفصل بعداً شکست خورد، واردکردن‌ها را پیگیری کنید. WSDLها و طرح‌واره‌های دیگر می‌توانند از میزبان‌ها یا پروتکل‌های متفاوت استفاده کنند.

برای حالت بازیابی دیگر، افزونه متناظر را انتخاب کنید. WS-MetadataExchange از یک کانال استفاده می‌کند که قلاب ساخت آن GetChannelFactory است؛ تنظیمات binding و پروکسی آن به‌طور همگانی با بازنویسی HttpWebRequest جایگزین نمی‌شود.

یک پروکسی پیش‌فرض برنامه می‌تواند کافی باشد وقتی همه اجزای قدیمی مشارکت‌کننده باید آن را به اشتراک بگذارند. زیرکلاس برای مالکیت صریح فراداده در این خانواده API است. فراخوانی‌های SOAP تولیدشده هنوز به پیکربندی حمل‌ونقل زمان اجرای خود نیاز دارند. برای کلاینت BasicHttpBinding، ProxyAddress و UseDefaultWebProxy را با هم بررسی کنید.

مقالات مرتبط