WCF op .NET Framework: proxyinstellingen voor HTTP GET-metadata
Configureer het oudere WCF-metadata-ophaalpad, inclusief HTTP-imports, apart van de uiteindelijke SOAP-serviceclient.
Voor WCF-metadata-ophalen in HTTP GET-modus op .NET Framework 4.8.1 configureert u het eerdere metadataverzoek in plaats van alleen de uiteindelijke SOAP-client. De beschermde GetWebRequest-hook kan een afzonderlijk beheerde route toepassen:
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;
}
}De typen komen uit System.Net en System.ServiceModel.Description. Bouw deze client met de bedoelde WebProxy en gebruik de HttpGet-modus voor de WSDL-URL. Zet het proxyaccount op dat object; authenticatie bij de metadataserver staat daar los van.
Volg imports als het root-WSDL slaagt maar de resolutie later mislukt. Andere WSDL's en schema's kunnen andere hosts of protocollen gebruiken.
Kies de bijbehorende extensie voor een andere ophaalmodus. WS-MetadataExchange gebruikt een kanaal, waarvan de aanmaakhook GetChannelFactory is; de binding- en proxyinstellingen ervan worden niet universeel vervangen door een HttpWebRequest-overschrijving.
Een standaardtoepassingsproxy kan volstaan wanneer alle deelnemende legacy-componenten deze moeten delen. De subklasse is voor expliciet metadata-eigenaarschap binnen deze API-familie. Gegenereerde SOAP-aanroepen hebben nog steeds hun eigen runtime-transportconfiguratie nodig. Controleer voor een BasicHttpBinding-client ProxyAddress en UseDefaultWebProxy samen.