Untuk pengambilan metadata WCF dalam mode HTTP GET di .NET Framework 4.8.1, konfigurasikan permintaan metadata yang lebih awal, bukan hanya klien SOAP akhir. Hook GetWebRequest yang dilindungi dapat menerapkan rute yang dikelola secara terpisah:

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

Tipe-tipe berasal dari System.Net dan System.ServiceModel.Description. Bangun klien ini dengan WebProxy yang dimaksudkan dan gunakan mode HttpGet untuk URL WSDL. Letakkan akun proksi pada objek itu; autentikasi server metadata terpisah.

Ikuti impor jika WSDL akar berhasil tetapi resolusi gagal nanti. WSDL dan skema lain dapat memakai host atau protokol berbeda.

Pilih ekstensi yang sesuai untuk mode pengambilan lain. WS-MetadataExchange memakai kanal, yang hook pembuatannya adalah GetChannelFactory; pengaturan binding dan proksinya tidak digantikan secara universal oleh penimpaan HttpWebRequest.

Proksi aplikasi default dapat memadai bila semua komponen lama yang berpartisipasi harus berbagi proksi itu. Subkelas ini untuk kepemilikan metadata yang eksplisit dalam keluarga API ini. Pemanggilan SOAP yang dihasilkan tetap memerlukan konfigurasi transport runtime-nya sendiri. Untuk klien BasicHttpBinding, periksa ProxyAddress dan UseDefaultWebProxy bersama-sama.

Artikel terkait