【问题标题】:Generate WCF [ServiceContract] from WSDL using SvcUtil: can't find Schema information使用 SvcUtil 从 WSDL 生成 WCF [ServiceContract]:找不到架构信息
【发布时间】:2019-01-23 06:22:27
【问题描述】:

我有一个.WSDL 文件,其中包含与服务通信的接口。 我需要创建一个提供 WSDL 中描述的功能的主机。

这意味着我必须创建一个带有[ServiceContract] 的接口,并可能创建一个或多个带有[DataContract] 的类。

我认为SvcUtil.Exe 会为我做这件事。帮助说:

svcutil.exe 可以为服务合同生成代码,... 从元数据文档。这些元数据文档可以在磁盘上或...

所以我在带有 .WSDL 的文件夹中运行 SvcUtil:

SvcUtil.exe Example.Wsdl

这给了我以下错误:

错误:无法导入 wsdl:portType
详细信息:运行 WSDL 导入扩展时引发异常:
System.ServiceModel.Description.DataContractSerializerMessageContractImporter 错误:带有目标命名空间的架构 'http://logius.nl/digipoort/koppelvlakservices/1.2/' 不能是 找到了。
错误源的 XPath:
//wsdl:定义[@targetNamespace = 'http://logius.nl/digipoort/wus/2.0/afleverservice/1.2/'] /wsdl:portType[@name='AfeverService_V1_2']

我将此解释为该文件 example.wsdl 需要一个无法找到的架构。

在文件Example.WSDL:

<wsdl:types>
  <xsd:schema elementFormDefault="qualified" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <xsd:import 
      namespace = "http://logius.nl/digipoort/koppelvlakservices/1.2/"
      schemaLocation="../digipoort-koppelvlak-1.2.xsd"
      />
  </xsd:schema> 
</wsdl:types>

我猜这意味着具有请求架构的文件应该位于文件名digipoort-koppelvlak-1.2.xsd 的超级文件夹中 我有一个包含架构信息的基本文件夹和一个包含 .WSDL 的子文件夹:

basefolder
    digipoort-koppelvlak-1.2.xsd
basefolder\subfolder
    Example.WSDL

digipoort-koppelvlak-1.2.xsd的第一行:

<xsd:schema xmlns:xsd = "http://www.w3.org/2001/XMLSchema"
            xmlns:tns ="http://logius.nl/digipoort/koppelvlakservices/1.2/"
            targetNamespace = "http://logius.nl/digipoort/koppelvlakservices/1.2/" 
            elementFormDefault="qualified">

在我看来,这似乎是请求的架构。那么为什么 SvcUtil 找不到具有上述命名空间的 Schema?

奇怪的是,.WSDL 文件似乎是正确的,因为我可以在 Visual Studio 中为此创建客户端类(菜单:项目/添加服务参考)。但我不知道如何创建类来托管服务

【问题讨论】:

    标签: wcf wsdl svcutil.exe


    【解决方案1】:

    解决办法是在命令行中提及.XSD文件:

    SvcUtil.exe c:\...basefolder\digipoort-koppelvlak-1.2.xsd Example.Wsdl
    

    虽然这并不能解释为什么 XSD 不自动包含在内,但它会生成一个带有请求的 [servicecontract] 的文件

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-22
      • 2021-12-12
      • 2010-09-15
      • 2014-11-01
      • 2020-07-09
      相关资源
      最近更新 更多