我的服务器最近已升级为支持TLS 1.2,而其他服务器(TLS 1.0和TLS 1.1.)已被禁用.现在,当我尝试生成引用时,它会给出以下异常:
服务网址= https://server-name/service.asmx
错误:无法从“服务URL”获取元数据如果这是您有权访问的Windows(R)Communication Foundation服务,请检查您是否已在指定地址启用元数据发布.有关启用元数据发布的帮助,请参阅MSDN文档,网址为http://go.microsoft.com/fwlink/?LinkId=65455.WS-Metadata Exchange错误URI:“service url”元数据包含无法解析的引用:“service url”.将HTTP请求发送到“服务URL”时发生错误这可能是由于在HTTPS情况下未使用HTTP.SYS正确配置服务器证书.这也可能是由客户端和服务器之间的安全绑定不匹配引起的.底层连接已关闭:发送时发生意外错误.从传输流中收到意外的EOF或0字节. HTTP GET错误URI:“service url”下载“service url”时出错.底层连接已关闭:发送时发生意外错误.从传输流中收到意外的EOF或0字节.
support.microsoft.com/kb/888528
解决方法
在PCI合规性迫使我们全面禁用SSL3和TLS 1.0之后,我们最近遇到了这个问题.最终,我们发现的最佳解决方案与客户端应用程序用于连接到.NET 4.5上的Web服务的解决方案相同;即,添加一些代码以在运行时调整Visual Studio的设置.在最基本的形式中,看起来像这样:
System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls | System.Net.SecurityProtocolType.Tls11 | System.Net.SecurityProtocolType.Tls12;
我们通过VS包提供了一个简单的配置UI,如果你想要一个插入式解决方案,可以在visual studio库中找到它:
https://visualstudiogallery.msdn.microsoft.com/63750942-1ebe-45dd-bade-552dd850873e
如果你想自己处理它,你需要做的就是创建一个VSIX包或一个外接程序(两者都需要visual studio sdk).
祝好运!