Использование службы WSDL через https с сертификатом - PullRequest
1 голос
/ 14 марта 2012

У меня та же служба wsdl, которую я подключил в VS, сертификат, полученный от администратора службы, и адрес https для подключения.Итак, мне нужно вызвать один метод из этой службы wsdl (MigomCommonService), и это мой код для этого:

            string adress = "https://xxxx.xxx.com/MigomCommonService/MigomCommonPort";
            string thumbprint = "xx xx xx xx xx xx xx xx xx xx xx xx xx xx";

            WSHttpBinding binding = new WSHttpBinding();
            binding.Name = "MigomCommonBinding";
            binding.Security.Mode = SecurityMode.Transport;
            binding.Security.Message.ClientCredentialType = MessageCredentialType.Certificate;

            EndpointAddress addr = new EndpointAddress(adress);

            MigomCommonService.MigomCommonPortTypeClient migomClient = new MigomCommonService.MigomCommonPortTypeClient(binding, addr);
            migomClient.ClientCredentials.ClientCertificate.Certificate = GetCertificate(thumbprint);

            migomClient.Open();

            Session sessionPart = SessionPartRequest();
            string requestPart = CountryListRequest();
            string response = migomClient.MigomCommonOperation(ref sessionPart, requestPart);

Когда я вызываю метод MigomCommonOperation, я получаю ошибку аутентификации (407), ноя могу вызвать эту службу WSDL через браузер успешно.Что не так в этом коде?Может быть, я забыл что-то в обязательной части или другую вещь?

1 Ответ

0 голосов
/ 14 марта 2012

Полагаю, эта ссылка решит вашу проблему. получить доступ к конечной точке WCF по протоколу HTTPS. http://www.codeproject.com/Articles/36705/7-simple-steps-to-enable-HTTPS-on-WCF-WsHttp-bindi Вам нужно установить сертификацию на свой локальный сервер и доверять ей, а затем настроить диспетчер точки обслуживания WCF следующим образом:

ServicePointManager.ServerCertificateValidationCallback = 
          new RemoteCertificateValidationCallback(IgnoreCertificateErrorHandler); 
        Service1Client obj = new Service1Client();
...