Доступ к веб-сервису через HTTPS дает ArgumentException - PullRequest
1 голос
/ 13 сентября 2011

В C # я пытаюсь получить доступ к веб-службе, расположенной по адресу HTTPS. Мой код определен в библиотеке классов, на которую ссылаются в основном приложении (ях) с использованием DLL - поэтому стандартный способ настройки веб-служб с помощью файла App.config здесь невозможен. Мой код по существу равен следующему:

var remoteAddress = new System.ServiceModel.EndpointAddress(
    "https://myUrl.com/Service.svc");
MyServiceClient myClient = new MyServiceClient(
    new System.ServiceModel.WSHttpBinding(),
    remoteAddress);
myClient.ClientCredentials.ClientCertificate.SetCertificate(
    StoreLocation.CurrentUser,
    StoreName.My,
    X509FindType.FindByThumbprint,
    "91 47 0b e8 80 bf ee 68 32 93 f0 d4 ee e6 14 8c e5 0c fa 3e"
    );
myClient.Endpoint.Binding.SendTimeout = new TimeSpan(0, 0, 0, 10);
var myResult = myClient.MyMethod("foo bar");

Но даже если я использую WSHttpBinding, я получаю ArgumentException с сообщением:

Предоставленная схема URI «https» недействительна; ожидаемое «http».
Имя параметра: через

Может кто-нибудь определить, в чем проблема?

1 Ответ

0 голосов
/ 13 сентября 2011

Поскольку вы используете SSL / TLS, т.е. https , имеет смысл создать экземпляр WSHttpBinding с этой информацией.Например, изменить

new System.ServiceModel.WSHttpBinding()

на новый System.ServiceModel.WSHttpBinding (SecurityMode.xxx)

, где xxx определено в http://msdn.microsoft.com/en-us/library/ms575161.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...