添加服务引用会生成空的reference.cs和空的config.svcinfo文件

时间:2014-02-21 02:41:58

标签: c# web-services wcf soap wsdl

我正在尝试连接此网络服务:http://www.eotd.org/search/server/terminology-service-soap.wsdl

网络服务网站:http://www.eccma.org/resources/webservices.php

当我在C#中添加服务引用时,生成的reference.cs文件为空,并且config.svcinfo和config91.svcinfo在其行为,绑定和端点中没有任何内容。 此外,不确定原因,但在创建的服务引用中有两个不同的wsdl文件。

我已尝试在SO上发布的解决方案,例如取消选中“在引用的程序集中重用类型”并将集合类型更改为Generic.List但到目前为止没有任何工作。

任何人都可以实际连接到此网络服务吗?关于问题是什么的任何想法?

2 个答案:

答案 0 :(得分:0)

我使用命令svcutil http://www.eotd.org/search/server/terminology-service-soap.wsdl运行svcutil并遇到以下错误:

  

C:\ temp中> SvcUtil工具   http://www.eotd.org/search/server/terminology-service-soap.wsdl   Microsoft(R)服务模型元数据工具[Microsoft(R)Windows(R)   Communication Foundation,Version 4.0.30319.33440] Copyright(c)   微软公司。保留所有权利。

     

尝试从中下载元数据   'http://www.eotd.org/search/server/terminology-service-soap.wsdl'   使用WS-Metadata Exchange或DISCO。错误:无法导入   wsdl:portType详细信息:运行WSDL时抛出异常   进口延期:   System.ServiceModel.Description.XmlSerializerMessageContractImporter   错误:具有目标命名空间的架构   '瓮:ISO:STD:ISO:TS:29002:-20:ED-1:技术:XML的模式:分辨率服务的数据'   无法找到。 XPath到错误源:   // WSDL:定义[@的targetNamespace = '瓮:ISO:STD:ISO:TS:29002:-20:ED-1:技术:web服务:术语服务'] / WSDL:portType的[@na   我= 'terminology_service']

     

错误:无法导入wsdl:binding详细信息:导入时出错   wsdl:binding依赖的wsdl:portType。 XPath到   WSDL:端口类型:   // WSDL:定义[@的targetNamespace = '瓮:ISO:STD:ISO:TS:29002:-20:ED-1:技术:web服务:术语服务'] / WSDL:portType的[@n   ame ='terminology_service'] XPath到错误源:   // WSDL:定义[@的targetNamespace = '瓮:ISO:STD:ISO:TS:29002:-20:ED-1:技术:web服务:术语服务:皂'] / WSDL:结合   [@名称= 'terminology_service_SOAP_binding']

     

错误:无法导入wsdl:port详细信息:导入时出错   wsdl:wsdl:port依赖的绑定。 XPath到   WSDL:结合:   // WSDL:定义[@的targetNamespace = '瓮:ISO:STD:ISO:TS:29002:-20:ED-1:技术:web服务:术语服务:皂'] / WSDL:结合   [@ name ='terminology_service_SOAP_binding'] XPath到错误源:   // WSDL:定义[@的targetNamespace = '瓮:ISO:STD:ISO:TS:29002:-20:ED-1:技术:web服务:术语服务:皂'] / WSDL:服务   [@名称= 'terminology_service'] / WSDL:端口[@名称= 'terminology_service_port']

     

生成文件...警告:未生成任何代码。如果你在尝试   生成客户端,这可能是因为元数据文档确实如此   不包含任何有效的合同或服务或因为所有   发现合同/服务存在于/参考集合中。   验证您是否已将所有元数据文档传递给该工具。

     

警告:如果您想从架构生成数据合同   确保使用/ dataContractOnly选项。

答案 1 :(得分:0)

您链接的WSDL有效。但是,看起来微软工具无法遵循相对导入路径 - John Saunders尝试了svcutil.exe,而我只是使用了wsdl.exe。

不幸的是,这里暴露的WSDL充满了它们。

例如,

<wsdl:import namespace="urn:iso:std:iso:ts:29002:-20:ed-1:tech:web-service:terminology-service" location="terminology-service.wsdl"/>

指向以下位置:http://www.eotd.org/search/server/terminology-service.wsdl

从这个文件中有更多的导入:

<xsd:import namespace="urn:iso:std:iso:ts:29002:-5:ed-1:tech:xml-schema:identifier" schemaLocation="identifier.xsd"/>
<xsd:import namespace="urn:iso:std:iso:ts:29002:-20:ed-1:tech:xml-schema:resolution-service-data" schemaLocation="resolution-service-data.xsd"/>
<xsd:import namespace="urn:iso:std:iso:ts:29002:-20:ed-1:tech:xml-schema:terminology-service-data" schemaLocation="terminology-service-data.xsd"/>
<xsd:import namespace="urn:iso:std:iso:ts:29002:-6:ed-1:tech:xml-schema:terminology-service-dictionary" schemaLocation="terminology-service-dictionary.xsd"/>
<xsd:import namespace="urn:iso:std:iso:ts:29002:-20:ed-1:tech:xml-schema:ontology-service-data" schemaLocation="ontology-service-data.xsd"/>

所有这些都是相对导入路径。我查看了几个这些XSD导入,它们还包括相对导入路径。

因此,最简单的方法是找到一种方法让您的工具遵循相对路径。您也可以手动下载每个资源文件,然后编辑它们以确保所有导入路径都是绝对的。但是,我不确定微软工具是否可以遵循文件系统上的路径,或者它们是否需要是URI。

如果没有,那么您必须告诉供应商您不能使用该服务,因为您需要所有各种导入的绝对URI。

修改 其他人似乎在此处使用本地导入路径取得了成功https://stackoverflow.com/a/19912058/569662