使用SvcUtil从WSDL生成WCF [ServiceContract]:找不到架构信息

时间:2018-08-16 10:09:34

标签: wcf wsdl svcutil.exe

我有一个.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:definitions [@targetNamespace =   'http://logius.nl/digipoort/wus/2.0/afleverservice/1.2/']   / wsdl:portType [@ name ='AfleverService_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无法找到具有上述命名空间的架构?

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

1 个答案:

答案 0 :(得分:0)

一种解决方案是在命令行中提及 ItemTouchHelper.SimpleCallback swipeToRemoveCallback = new SwipeToRemoveCallback(this); ItemTouchHelper itemTouchHelper = new ItemTouchHelper(swipeToRemoveCallback); itemTouchHelper.attachToRecyclerView(binding.listState.myShoppingList); 文件:

.XSD

尽管这不能解释为什么不自动包含XSD,但它会生成包含请求的SvcUtil.exe c:\...basefolder\digipoort-koppelvlak-1.2.xsd Example.Wsdl

的文件