【问题标题】:wsdl.exe with SSL/TLS带有 SSL/TLS 的 wsdl.exe
【发布时间】:2012-06-23 22:12:26
【问题描述】:

我一直在尝试向提供者提供更多信息,说明我在尝试使用他的一个 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)检查证书是否已安装且可用。我认为是。

谁能告诉我我能做什么? 怎么安装了cert,但是命令却无法到达?

【问题讨论】:

    标签: c# service https certificate wsdl.exe


    【解决方案1】:

    您是说需要提供客户端证书才能导航到该网页吗?如果是这种情况,我不确定你是否可以直接使用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 文件中找到的 &lt;?include&gt; 指令或 &lt;wsdl:import&gt; 标记,它们会引入第二个。您需要检查每个新文件,因为通常有二级和三级导入。将所有内容放入一个文件夹。
    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 filewsdl.exe 似乎不再识别 XML 文件类型。 Error: Unrecognized file type '*file path*'. The extension must be one of .wsdl or .xsd.
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2019-05-14
      • 2021-09-15
      • 2016-06-02
      • 2021-10-03
      • 2015-12-06
      • 2017-01-11
      • 1970-01-01
      • 2017-11-08
      • 2019-03-13
      相关资源
      最近更新 更多