6

我一直在尝试向提供者提供有关我在尝试使用他的 WS 之一时遇到的错误的更多信息。

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

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

我做到了,得到:错误:处理“ https://example.oom?wsdl ”时出错。- 下载“ https://example.com?wsdl ”时出错。- 请求被中止:无法创建 SSL/TLS 安全通道。

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

谁能告诉我我能做什么?证书是如何安装的,但命令无法访问它?

4

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>您需要检查每个新文件,因为通常有二级和三级导入。把所有东西都放在一个文件夹里。
  2. 编辑所有这些包括引用以删除 URL 并仅使用本地文件引用。

完成后,wsdl.exe应该可以正常运行。(在 .NET 4.5 中内置了对动态展平 WSDL 文件的支持,但在此之前您必须手动进行。)

于 2012-06-21T16:21:57.827 回答
3

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

于 2012-06-21T16:21:28.327 回答