C# _https web服务中缺少vti_bin/ListData.svc/$元数据

C# _https web服务中缺少vti_bin/ListData.svc/$元数据,c#,wcf,ssl,C#,Wcf,Ssl,我必须从VS2012(或VS2017,同样的问题)连接到一个基于java的web服务,该服务只支持TLS1.2和相互证书身份验证。WSDL URL就是一个例子。我已将根证书添加到我的受信任根存储中,将带有私钥的客户端证书添加到我的个人存储中,并且我可以使用Chrome下载WSDL文件(在浏览器要求我提供连接到服务的证书后) 问题是,我无法在Visual Studio中添加服务引用。我得到的文本是“尝试在“”处查找服务时发生错误(详细信息)”。单击“详细信息”将显示以下文本: 下载时出错 “$me

我必须从VS2012(或VS2017,同样的问题)连接到一个基于java的web服务,该服务只支持TLS1.2和相互证书身份验证。WSDL URL就是一个例子。我已将根证书添加到我的受信任根存储中,将带有私钥的客户端证书添加到我的个人存储中,并且我可以使用Chrome下载WSDL文件(在浏览器要求我提供连接到服务的证书后)

问题是,我无法在Visual Studio中添加服务引用。我得到的文本是“尝试在“”处查找服务时发生错误(详细信息)”。单击“详细信息”将显示以下文本:

下载时出错 “$metadata”。 请求被中止:无法创建SSL/TLS安全通道。 元数据包含无法解析的引用: ''. 能够 未为具有权限的SSL/TLS建立安全通道 'example.com:8443'。请求已中止:无法执行 创建SSL/TLS安全通道。如果服务是在 当前解决方案,请尝试构建解决方案并添加服务 再次引用

看起来VisualStudio获得了主要的WSDL部分,但随后要求提供这句…/$metadata格言,这句格言不存在,WSDL中也没有提到。如何配置Visual Studio以按原样使用服务


注意,我可以下载WSDL文件并从该文件添加服务引用,但我更愿意依靠VisualStudio为我自动完成这项工作,这样一年后的下一个开发人员就不必花一天的时间来弄清楚如何更新引用。此外,WSDL文件的绝对路径保存在Reference.svcmap文件中,这在通过源代码管理共享项目时并不理想。

虽然问题与c#无关,但如果需要一些代码,或者只是为了吸引更多合适的读者,我希望c#标记出现在这里。您如何添加引用?是否要:添加服务引用-->高级-->添加Web引用并在此处输入WSDL的路径,然后单击添加引用?我认为$metadata可能是指模式(xsd定义和WSDL)。添加URL时,这两个(服务引用和web服务引用)都会出现相同的问题。从硬盘添加路径时不会出现问题。可能是因为您的证书不受信任而无法建立ssl连接,即使证书已放入受信任的根存储中,也会发生这种情况,例如,如果名称sertificate与您的url不同…请尝试检查您的证书,如此处所述