将Wsdl导入为连接服务时出错

时间:2017-02-21 08:06:12

标签: wcf visual-studio-2015 wsdl .net-core

我有一个针对.NET Core的应用程序。 当我尝试导入wsdl文件时,出现以下错误。

Scaffolding Code ...
Error:Error: Cannot import wsdl:portType
Detail: An exception was thrown while running a WSDL import extension: System.ServiceModel.Description.DataContractSerializerMessageContractImporter
Error: Schema with target namespace 'http://xml.amadeus.com/2010/06/Session_v3' could not be found.
XPath to Error Source: //wsdl:definitions[@targetNamespace='http://xml.amadeus.com']/wsdl:portType[@name='AmadeusWebServicesPT']
Warning: Cannot import wsdl:binding
Detail: There was an error importing a wsdl:portType that the wsdl:binding is dependent on.
XPath to wsdl:portType: //wsdl:definitions[@targetNamespace='http://xml.amadeus.com']/wsdl:portType[@name='AmadeusWebServicesPT']
XPath to Error Source: //wsdl:definitions[@targetNamespace='http://xml.amadeus.com']/wsdl:binding[@name='AmadeusWebServicesBinding']
Warning: Cannot import wsdl:port
Detail: 
XPath to Error Source: //wsdl:definitions[@targetNamespace='http://xml.amadeus.com']/wsdl:service[@name='AmadeusWebServices']/wsdl:port[@name='AmadeusWebServicesPort']
Error: No endpoints compatible with .Net Core apps were found.
An error occurred in the tool.

Failed to generate service reference.

该问题有解决方案或解决方法吗?

感谢。

修改

我已经找到了问题所在。要重新生成存根,我需要直接从命令行运行“svcutil.exe”(或在某个虚拟C#项目中生成存根),因为WCF连接服务无法从此WSDL生成存根。

关于wsdl的生成代码使用.Net Standard 1.6不支持的以下属性。

  

SerializableAttribute,DesignerCategoryAttribute

当我手动创建这两个属性时,我就能够构建我的应用程序。

1 个答案:

答案 0 :(得分:1)

我们可以通过addservicesdotnet-svcutil工具以两种方式添加服务。

问题是您的Web服务终结点的WSDL使用另一种方式存储XML操作数据。正如Henk所指出的,这里的解决方案是在手动运行dotnet-svcutil工具时使用包装标志。

请按照以下步骤操作:

  1. 编辑您的.csproj文件,并将以下节点添加到<ItemGroup>节点内:<DotNetCliToolReference Include="dotnet-svcutil" Version="1.0.*" />
  2. 从.csproj文件所在的文件夹中打开PowerShell终端。
  3. 运行dotnet restore
  4. 运行dotnet svcutil https://smp.difi.no/ws/2.0?wsdl -wr