使用SSL/TLS的wsdl.exe

6

我一直在试图向提供程序提供更多信息,以了解当我尝试使用其WS时遇到的错误。

他们要求我使用wsdl.exe执行以下命令:

wsdl.exe /l:CS /protocol:SOAP /verbose /sharetypes https:example.com/?wsdl

我这样做并得到了以下结果: Error: There was an error processing 'https://example.oom?wsdl'. - There was an error downloading 'https://example.com?wsdl'. - The request was aborted: Could not create SSL/TLS secure channel。

问题是我有一个用于导航到 "https://example.com?wsdl" 的证书,而且我认为它已经正确安装了。当我尝试在IE中访问该URL时,我只需要从列表中选择证书并给予某些权限即可显示wsdl。 我问我的WS提供商告诉我如何告诉命令:“使用ssl。使用此证书”。他们让我问我的网络团队,但我没有这样的团队,所以我问了谷歌,并发现:1)启用SSL/TLS(如果这意味着进入:IE > Internet选项 >高级>启用SSL/TLS, 我已经做到了)和2)检查证书是否已安装并可用。我认为它是这样的。

有人能告诉我该怎么办吗? 为什么证书已安装,但命令无法访问它?

2个回答

8
你是说需要提供客户端证书才能访问该网页吗?如果是这样,我不确定你是否可以直接使用wsdl.exe工具进行连接。但是你不需要这样做。在IE中加载WSDL并将其保存为XML,然后将wsdl.exe指向文件的本地副本。唯一不同的输出是代理类中嵌入的默认终结点地址。无论如何,你都应该在运行时设置该值,但你也可以编辑自动生成的C#代码并进行修复。实际的服务和数据契约以及实现代码将完全相同。
一个注意事项:如果此WSDL由WCF生成,则需要进行额外的工作。WCF生成联合WSDL定义:通常有半打或更多单独的XSD文件组成整个WSDL定义。通常,在一个文件中找到与连接相关的信息,而类型信息则使用类似于以下标记从其他地方获取:
<wsdl:types>
  <xsd:schema targetNamespace="foo">
    <xsd:import schemaLocation="https://localhost/Foo.svc?xsd=xsd0" namespace="foo"/>
    <xsd:import schemaLocation="https://localhost/Foo.svc?xsd=xsd1" namespace="http://schemas.microsoft.com/2003/10/Serialization/"/>
    <xsd:import schemaLocation="https://localhost/Foo.svc?xsd=xsd2" namespace="http://schemas.datacontract.org/2004/07/Foo.Model"/>
    <xsd:import schemaLocation="https://localhost/Foo.svc?xsd=xsd3" namespace="http://schemas.datacontract.org/2004/07/System.Collections.ObjectModel"/>
  </xsd:schema>
</wsdl:types>

如果这是真的,你需要做两件事才能获得所需的WSDL:
  1. 下载所有被引用的文件。这些文件可能是其他XML文件中找到的<?include>指令或<wsdl:import>标签,后者引入了第二个XML文件。你需要检查每个新文件,因为通常会有第二和第三级别的引用。将所有内容放入一个文件夹中。
  2. 编辑所有包含的引用以删除URL并仅使用本地文件引用。
完成以上步骤后,wsdl.exe应该可以正常运行。(在.NET 4.5中,有内置支持动态展开WSDL文件,但在此之前,您必须手动执行以上步骤)

Load the WSDL up in IE and save it as XML, then point wsdl.exe to the local copy of the file wsdl.exe no longer seems to recognise XML file types. Error: Unrecognized file type '*file path*'. The extension must be one of .wsdl or .xsd. - Guybrush Threepwood

3

将wsdl下载到您的浏览器中,保存到文件中,然后在本地文件上使用wsdl.exe。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接