2012-04-21 38 views
6

Tôi đang sử dụng BasicHttpBinding để kết nối dịch vụ web được lưu trữ trên cổng bảo mật (https). Để làm cho nó hoạt động, tôi đã thay đổi Security.Mode thành TransportWithMessageCredentialSecurity.Message thành BasicHttpMessageCredentialType.Cerificate. Tôi cũng đang gọi sốhttps sử dụng BasicHttpBinding và bỏ qua các lỗi chứng chỉ

client.ClientCredentials.ClientCertificate.SetCertificate() 

với localhost làm tên chủ đề.

Vấn đề ở đây là để kiểm tra đơn vị, tôi có chứng chỉ chưa được ký từ máy chủ web và có nghĩa vụ bỏ qua bất kỳ lỗi chứng chỉ nào được tạo trong quá trình tạo proxy; nhưng tôi không thể làm như vậy, bởi vì tôi vẫn gặp lỗi khi yêu cầu tôi "chỉ định chứng chỉ". Ngay bây giờ, tôi không biết gì; Tôi đánh giá cao bất kỳ sự trợ giúp nào ở đây.

+0

Nếu bạn chỉ sử dụng chứng chỉ máy chủ, hãy đặt 'SecurityMode' thành' Transport' – Tung

+0

Cảm ơn @Tung; Tôi có thể nhận được phương thức RemoteCertificateValidationCallback được gọi và có thể trả về 'TRUE' để bỏ qua các lỗi! Hãy viết bình luận của bạn như một câu trả lời! –

Trả lời

6

Đối với ssl máy chủ, SecurityMode phải được đặt thành Transport.

9

Bạn có thể sử dụng mã sau để bỏ qua xác thực chứng chỉ. Điều này tạo ra một RemoteCertificateValidationCallback luôn trả về true cho bất kỳ chứng chỉ nào.

System.Net.ServicePointManager.ServerCertificateValidationCallback = 
    (sender, certificate, chain, errors) => true; 
+1

Tôi đã có ServerCertificateValidationCallback nhưng không được gọi; một khi tôi đã thay đổi Chế độ Bảo mật thành Giao thông, nó đã hoạt động! –

Các vấn đề liên quan