使用svcutil生成客户端代码

时间:2011-05-11 12:33:24

标签: wcf svcutil.exe

我正在尝试使用svcutil.exe工具生成客户端代理代码。它抛出了以下错误。

我正在使用以下命令。

svcutil /namespace:http://www.starstandard.org/STAR/5,* /out:STARContract.cs / noConfig SendOrderOrder.wsdl SendOrderOrderType.xsd

--------------------输出----------------------

错误:验证导出期间生成的某些XML架构时出错: 未声明'http://www.starstandard.org/STAR/5:SendOrder'元素。

错误:无法导入wsdl:portType 详细信息:运行WSDL导入扩展时抛出异常:System.ServiceModel.Descripti on.XmlSerializerMessageContractImporter 错误:缺少元素'http://www.starstandard.org/STAR/5:SendOrder'。 XPath到错误源://wsdl:definitions[@targetNamespace='http://www.starstandards.org/webservices / 2005/10 /运输/绑定 '] / WSDL:portType的[@名称=' starTransportPortTypes']

错误:无法导入wsdl:binding 详细信息:导入wsdl:binding依赖的wsdl:portType时出错。 XPath到wsdl:portType://wsdl:definitionf [@targetNamespace ='http://www.starstandards.org/webservice S / 2005/10 /运输/绑定 '] / WSDL:portType的[@名称=' starTransportPortTypes'] XPath到错误源://wsdl:definitions[@targetNamespace='http://www.starstandards.org/webservices / 2005/10 /运输/绑定 '] / WSDL:结合[@名称=' starTransport']

错误:无法导入wsdl:port 详细信息:导入wsdl:port依赖的wsdl:binding时出错。 XPath到wsdl:binding://wsdl:definitionf [@targetNamespace ='http://www.starstandards.org/webservices / 2005/10 /运输/绑定 '] / WSDL:结合[@名称=' starTransport'] XPath到错误源://wsdl:definitions[@targetNamespace='http://www.starstandards.org/webservices / 2005/10 /运输/绑定 '] / WSDL:服务[@名称=' SendOrderWebService '] / WSDL:端口[@名称=' SendOrderStarTransport']

生成文件...... 警告:未生成任何代码。 如果您尝试生成客户端,这可能是因为元数据文档没有包含 n任何有效的合同或服务 或者因为发现所有合同/服务都存在于/ reference程序集中。验证你  将所有元数据文档传递给工具。

警告:如果您想从架构生成数据合同,请确保使用/ dataContrac 只有选择权。

---------输出结束-----------------

相对文件引用看起来很好。

当我尝试使用WSE创建相同的代码时,它可以正常工作并生成关联代理类而没有任何错误。但是在使用svcutil.exe时它不起作用。

有什么想法吗?

1 个答案:

答案 0 :(得分:-3)

我不熟悉您所指的WSDL / XSD,所以我无法解释为什么会失败的具体细节。

但是,在我看来,.Net wsdl和xsd工具的代码生成方面已经被打破了很长时间。它们不能应对许多标准的行业约定(包括处理AttributeGroup构造,强制包含名称空间,对可存档元素的处理不当,以及列表的继续。

如果您的WSDL / XSD文件使用import和/或include语句.Net可能会窒息。在很多情况下,像SOAPUI这样的工具正确处理WSDL并且可以生成各种工件,但.Net无法应对。

有些人使用名为WSCF Blue的工具取得了一些成功,但不幸的是我通常手工扁平化/整理WSDL / XSD文件,直到.Net可以应对它。