Để truy xuất siêu dữ liệu WCF ở chế độ HTTP GET trên .NET Framework 4.8.1, hãy cấu hình yêu cầu siêu dữ liệu trước đó chứ không chỉ ứng dụng khách SOAP cuối cùng. Hook GetWebRequest được bảo vệ của nó có thể áp dụng một tuyến đường được quản lý riêng:

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

Các kiểu đến từ System.Net và System.ServiceModel.Description. Xây dựng ứng dụng khách này với WebProxy dự kiến và dùng chế độ HttpGet cho URL của WSDL. Đặt tài khoản proxy trên đối tượng đó; xác thực máy chủ siêu dữ liệu là riêng biệt.

Hãy theo các nhập nếu WSDL gốc thành công nhưng việc phân giải sau đó thất bại. Các WSDL và lược đồ khác có thể dùng máy chủ hoặc giao thức khác.

Chọn tiện ích mở rộng tương ứng cho chế độ truy xuất khác. WS-MetadataExchange dùng một kênh, mà hook tạo của nó là GetChannelFactory; cài đặt binding và proxy của nó không được thay thế phổ quát bằng việc ghi đè HttpWebRequest.

Một proxy ứng dụng mặc định có thể đủ khi mọi thành phần cũ tham gia cần chia sẻ nó. Lớp con dành cho quyền sở hữu siêu dữ liệu rõ ràng trong họ API này. Các lệnh gọi SOAP được tạo vẫn cần cấu hình vận chuyển thời gian chạy riêng. Với ứng dụng khách BasicHttpBinding, hãy kiểm tra ProxyAddress và UseDefaultWebProxy cùng nhau.

Bài viết liên quan