לאחזור מטא-נתונים של 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. שימו את חשבון הפרוקסי על האובייקט הזה; אימות שרת המטא-נתונים נפרד.

עקבו אחרי הייבוא אם ה-WSDL השורשי מצליח אך הפתרון נכשל מאוחר יותר. WSDL וסכימות אחרים יכולים להשתמש במארחים או בפרוטוקולים שונים.

בחרו את ההרחבה המתאימה למצב אחזור אחר. WS-MetadataExchange משתמש בערוץ, שוו היצירה שלו הוא GetChannelFactory; הגדרות ה-binding והפרוקסי שלו אינן מוחלפות באופן גורף על ידי עקיפת HttpWebRequest.

פרוקסי ברירת מחדל של היישום יכול להספיק כאשר כל הרכיבים הוותיקים המשתתפים אמורים לחלוק אותו. תת-המחלקה נועדה לבעלות מפורשת על מטא-נתונים במשפחת ה-API הזו. קריאות SOAP שנוצרו עדיין זקוקות לתצורת התעבורה שלהן בזמן ריצה. עבור לקוח BasicHttpBinding, בדקו ProxyAddress ו-UseDefaultWebProxy יחד.

מאמרים קשורים