Per il recupero dei metadati WCF in modalità HTTP GET su .NET Framework 4.8.1, configura la richiesta di metadati precedente e non solo il client SOAP finale. Il suo hook protetto GetWebRequest può applicare una route gestita separatamente:

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;
    }
}

I tipi provengono da System.Net e System.ServiceModel.Description. Crea questo client con il WebProxy previsto e usa la modalità HttpGet per l'URL del WSDL. Metti l'account proxy su quell'oggetto; l'autenticazione al server dei metadati è separata.

Segui le importazioni se il WSDL radice riesce ma la risoluzione fallisce in seguito. Altri WSDL e schemi possono usare host o protocolli diversi.

Scegli l'estensione corrispondente per un'altra modalità di recupero. WS-MetadataExchange usa un canale, il cui hook di creazione è GetChannelFactory; le sue impostazioni di binding e proxy non vengono sostituite universalmente da una sovrascrittura di HttpWebRequest.

Un proxy applicativo predefinito può bastare quando tutti i componenti legacy partecipanti devono condividerlo. La sottoclasse serve per una proprietà esplicita dei metadati all'interno di questa famiglia di API. Le chiamate SOAP generate necessitano comunque della propria configurazione di trasporto in fase di esecuzione. Per un client BasicHttpBinding, controlla ProxyAddress e UseDefaultWebProxy insieme.

Articoli correlati