Как определить конкретное исключение из класса CommunicationException? - PullRequest
0 голосов
/ 27 ноября 2018

У меня есть служба WCF, которая работает на сервере по протоколу TLS 1.2.Мое приложение, которое использует .NET Framework 4.0, связывается с этим сервисом.Он может связываться через TLS 1.2 с кодом ниже:

ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072 | (SecurityProtocolType)768 | SecurityProtocolType.Tls | SecurityProtocolType.Ssl3;

Проблема заключается в том, что этот код будет работать только в том случае, если на компьютере клиента установлен хотя бы .NET Framework 4.5.Кроме того, некоторые клиенты имеют свои собственные серверы, на которых работает эта служба WCF, и те используют TLS 1.0.Я не хочу, чтобы эти клиенты принудительно обновляли .NET Framework своих сотрудников.

Итак, я хочу обработать исключение CommunicationException, выдаваемое службой WCF, когда она не может установить связь через протокол безопасности по умолчанию (TLS 1.0).Это исключение содержит следующую информацию:

System.ServiceModel.CommunicationException: Произошла ошибка при выполнении HTTP-запроса к https://quellon.espaider.com.br/FacilcorpHomolog/DocSite/DSAddIn.svc. Это может быть связано с тем, что сертификат сервера не являетсянастроен правильно с HTTP.SYS в случае HTTPS.Это также может быть вызвано несоответствием привязки безопасности между клиентом и сервером.---> System.Net.WebException: основное соединение было закрыто: при отправке произошла непредвиденная ошибка.---> System.IO.IOException: проверка подлинности завершилась неудачно, поскольку удаленная сторона закрыла исключение транспортного потока.

При возникновении этого конкретного исключения я буду использовать код, показанный в начале, иразрешить связь между моим приложением и службой.

Я хочу знать, есть ли какое-либо свойство или метод, который я могу использовать, чтобы определить, когда это исключение CommunicationException.Единственное, что приходит мне в голову - это использовать свойство Message, что, я думаю, не очень хорошая практика.

...