WCF unter .NET Framework: Proxy-Einstellungen für HTTP GET-Metadaten
Konfigurieren Sie den älteren WCF-Metadatenabruf, einschließlich HTTP-Importen, getrennt vom späteren SOAP-Dienstclient.
Für den WCF-Metadatenabruf im HTTP GET-Modus unter .NET Framework 4.8.1 konfigurieren Sie die frühere Metadatenanforderung und nicht nur den späteren SOAP-Client. Der geschützte GetWebRequest-Hook kann eine separat verwaltete Route anwenden:
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;
}
}Die Typen stammen aus System.Net und System.ServiceModel.Description. Erstellen Sie diesen Client mit dem vorgesehenen WebProxy, und verwenden Sie den HttpGet-Modus für die WSDL-URL. Legen Sie das Proxykonto auf diesem Objekt ab; die Authentifizierung am Metadatenserver ist getrennt.
Folgen Sie Importen, wenn das Stamm-WSDL erfolgreich ist, die Auflösung aber später fehlschlägt. Andere WSDLs und Schemas können andere Hosts oder Protokolle verwenden.
Wählen Sie für einen anderen Abrufmodus die entsprechende Erweiterung. WS-MetadataExchange verwendet einen Kanal, dessen Erstellungshook GetChannelFactory ist; seine Bindungs- und Proxy-Einstellungen werden nicht generell durch eine HttpWebRequest-Überschreibung ersetzt.
Ein Standardanwendungsproxy kann ausreichen, wenn alle beteiligten Legacy-Komponenten ihn gemeinsam nutzen sollen. Die Unterklasse dient der expliziten Metadatenzuständigkeit innerhalb dieser API-Familie. Generierte SOAP-Aufrufe benötigen weiterhin ihre eigene Laufzeittransportkonfiguration. Prüfen Sie bei einem BasicHttpBinding-Client ProxyAddress und UseDefaultWebProxy zusammen.