我有一个.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中为此创建客户端类(菜单:项目/添加服务参考)。但是我不知道如何创建类来托管服务
答案 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