WCF på .NET Framework: proxyinställningar för HTTP GET-metadata
Konfigurera den äldre WCF-metadatahämtningsvägen, inklusive HTTP-importer, separat från den slutliga SOAP-tjänstklienten.
För WCF-metadatahämtning i HTTP GET-läge på .NET Framework 4.8.1 konfigurerar du den tidigare metadatabegäran i stället för bara den slutliga SOAP-klienten. Dess skyddade GetWebRequest-hook kan tillämpa en separat hanterad väg:
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;
}
}Typerna kommer från System.Net och System.ServiceModel.Description. Bygg den här klienten med den avsedda WebProxy och använd HttpGet-läget för WSDL-URL:en. Lägg proxykontot på det objektet; autentisering mot metadataservern är separat.
Följ importer om rot-WSDL:en lyckas men upplösningen misslyckas senare. Andra WSDL:er och scheman kan använda andra värdar eller protokoll.
Välj motsvarande tillägg för ett annat hämtningsläge. WS-MetadataExchange använder en kanal, vars skapandehook är GetChannelFactory; dess bindnings- och proxyinställningar ersätts inte universellt av en HttpWebRequest-överskuggning.
En standardprogramproxy kan räcka när alla deltagande äldre komponenter ska dela den. Underklassen är för explicit metadataägande inom denna API-familj. Genererade SOAP-anrop behöver fortfarande sin egen runtime-transportkonfiguration. För en BasicHttpBinding-klient, kontrollera ProxyAddress och UseDefaultWebProxy tillsammans.