Третья сторона предоставила мне сертификат, который я импортировал локально. Я убедился, что сертификат добавлен в хранилище «Доверенные корневые центры сертификации». Кажется, он импортирован правильно, как если бы я зашел в Chrome и попытался получить доступ к одному из URL-адресов службы, упомянутых в файле WSDL веб-службы, я сначала получаю всплывающее окно с просьбой подтвердить, какой сертификат использовать (есть только один вариант) и тогда оно меня пропускает. Однако, если я затем использую тот же файл WSDL для создания ссылки на службу в Visual Studio и вызываю одну из служб в своем коде, я получаю сообщение об ошибке: «Не удалось установить безопасный канал для SSL/TLS с полномочиями». .
В идеале я бы хотел, чтобы VS подтверждал сертификат при вызове веб-сервиса, но, поскольку это система разработки, я также рад игнорировать SSL ошибки на данный момент.
С этой целью я добавил в свой код следующее, а также варианты протоколов, которые я указываю (например, указывая только SSL3, удаляя SSL3 и т. д.):
Код: Выделить всё
ServicePointManager.Expect100Continue = true;
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls
| SecurityProtocolType.Tls11
| SecurityProtocolType.Tls12
| SecurityProtocolType.Ssl3;
ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };
Если у кого-то есть какие-либо предложения о том, как заставить VS принять присутствующий сертификат (как это делает Chrome) или, альтернативно, как заставить код игнорировать ошибку SSL на данный момент, чтобы я мог продолжить разработку, это буду очень признателен.
Подробнее здесь: https://stackoverflow.com/questions/555 ... et-c-sharp