C# 如何从CommunicationException类中识别特定异常?

C# 如何从CommunicationException类中识别特定异常?,c#,wcf,ssl,exception-handling,tls1.2,C#,Wcf,Ssl,Exception Handling,Tls1.2,我有一个WCF服务,它使用协议TLS1.2在服务器上运行。我的应用程序使用.NET Framework 4.0与此服务进行通信。它可以通过TLS 1.2进行通信,代码如下: ServicePointManager.SecurityProtocol=(SecurityProtocolType)3072 |(SecurityProtocolType)768 | SecurityProtocolType.Tls | SecurityProtocolType.Ssl3 问题是,只有当客户机器至少安装了.

我有一个WCF服务,它使用协议TLS1.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

因此,我想处理WCF服务在无法通过默认SecurityProtocol(TLS 1.0)进行通信时引发的CommunicationException。此异常包含以下信息:

System.ServiceModel.CommunicationException:向发出HTTP请求时出错。这可能是因为在HTTPS情况下,服务器证书未正确配置为HTTP.SYS。这也可能是由于客户端和服务器之间的安全绑定不匹配造成的。-->System.Net.WebException:基础连接已关闭:发送时发生意外错误。-->System.IO.IOException:身份验证失败,因为远程方已关闭传输流异常

当抛出此特定异常时,我将使用开头显示的代码,并允许应用程序和服务之间的通信


我想知道是否有一些属性或方法可以用来识别什么时候CommunicationException是这个。我唯一想到的是使用Message属性,我认为这不是一个好的做法。

我从未找到其他方法将异常消息硬编码到源代码中并与之进行比较。您可以尝试列出的所有属性