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 για τη διεύθυνση URL του WSDL. Τοποθετήστε τον λογαριασμό διαμεσολαβητή σε εκείνο το αντικείμενο· ο έλεγχος ταυτότητας του διακομιστή μεταδεδομένων είναι ξεχωριστός.
Ακολουθήστε τις εισαγωγές εάν το ριζικό WSDL πετύχει αλλά η επίλυση αποτύχει αργότερα. Άλλα WSDL και σχήματα μπορούν να χρησιμοποιούν διαφορετικούς κεντρικούς υπολογιστές ή πρωτόκολλα.
Επιλέξτε την αντίστοιχη επέκταση για άλλη λειτουργία ανάκτησης. Το WS-MetadataExchange χρησιμοποιεί κανάλι, του οποίου το άγκιστρο δημιουργίας είναι GetChannelFactory· οι ρυθμίσεις binding και διαμεσολαβητή του δεν αντικαθίστανται καθολικά από παράκαμψη HttpWebRequest.
Ένας προεπιλεγμένος διαμεσολαβητής εφαρμογής μπορεί να αρκεί όταν όλα τα συμμετέχοντα παλαιότερα στοιχεία πρέπει να τον μοιράζονται. Η υποκλάση προορίζεται για ρητή κυριότητα μεταδεδομένων σε αυτή την οικογένεια API. Οι παραγόμενες κλήσεις SOAP εξακολουθούν να χρειάζονται τη δική τους διαμόρφωση μεταφοράς κατά τον χρόνο εκτέλεσης. Για πελάτη BasicHttpBinding, ελέγξτε ProxyAddress και UseDefaultWebProxy μαζί.