我有一个c#应用程序,当它尝试将文件保存到远程SharePoint服务器时,会生成错误“请求已中止:无法创建SSL / TLS安全通道”。这是在Windows 2012服务器上发生的,但该应用程序已从我的台式Windows计算机成功运行。
另外,从开发服务器,我能够使用IE11连接到SharePoint服务器,并且仅启用TLS 1.1。
该应用程序启用了所有安全协议。
我也知道该应用程序从不调用certificatevalidationcallback函数。
鉴于这些症状,是否有人知道可能出什么问题?
最佳答案
经过大量的实验,我找到了解决方案,但我仍然感到困惑。解决方案原来是使用
System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls11;
这并不奇怪。令人惊讶的是,当我遇到错误时,我正在使用
System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls11 | System.Net.SecurityProtocolType.Tls12;
我指定了这两种协议,因为我不确定远程服务器正在使用哪种协议,并且我认为允许这两种协议都没有不利之处。
现在,我想知道为什么允许第二个协议会导致应用程序无法建立安全通道。