2015-02-18 4 views
0

Я пытаюсь вызвать веб-службу на своем сервере через https из моего приложения mvc3. Я веб-службы по этому адресу:Ошибка вызова веб-службы C#: «Сертификат клиента не указан. Укажите сертификат клиента в учетных данных клиента»

https:localhost/web_services/web_services.asmx

И в моем коде я пытаюсь соединить так:

var binding = new BasicHttpsBinding(); 
binding.maxbuffersize = 10000; 
binding.maxbufferPoolsize = 10000; 
binding.maxreceivedmessageSize= 10000; 
binding.Security.Mode = System.ServiceModel.BasicHttpsSecurityMode.Transport; 
binding.Security.Transport.ClientCredentialsType = HttpClientCredentialType.Certificate 


var endpointAddress = new EndpointAddress("https:/localhost/web_services/web_services.asmx"); 
new ChannelFactory<ws_name_webreqSoap>(basicHttpsBinding, endpointAddress).CreateChannel(); 
var webServices = new ws_name_webreqSoapClient(basicHttpsBinding, endpointAddress); 

Однако, когда это работает на сервере, я получаю следующее сообщение :

«сертификат клиента не предусмотрено Укажите сертификат клиента в учетных данных клиента»

Мои знания HTTP S и сертификаты ограничены. Кто-нибудь знает решение этого?

Спасибо,

ответ

1

Вы можете указать сертификат клиента на ChannelFactory:

var channelFactory = new ChannelFactory<ws_name_webreqSoap>(basicHttpsBinding, endpointAddress); 
channelFactory.Credentials.ClientCertificate.SetCertificate("CN=client.com", StoreLocation.CurrentUser, StoreName.My); 
var channel = channelFactory.CreateChannel(); 
// ... 
Смежные вопросы