为什么这个WSDL文件在VS2008中生成一个空的服务代理?

时间:2009-04-16 20:48:48

标签: c# web-services wsdl

为什么this WSDL file在VS2008中生成空服务代理?

如果查看生成的Reference.cs文件,它是空的。有什么想法吗?

4 个答案:

答案 0 :(得分:9)

右键单击服务引用,配置,取消选中“在引用的程序集中重用类型”,然后单击“确定”。尝试更新服务参考。这对我有用!

答案 1 :(得分:3)

您是否阅读过错误列表?我得到了以下内容:

Custom tool warning: There was a validation error on a schema generated during export:
    Source: 
    Line: 144 Column: 12
   Validation Error: Wildcard '##any' allows element 'http://search.yahoo.com/mrss:text', and causes the content model to become ambiguous. A content model must be formed such that during validation of an element information item sequence, the particle contained directly, indirectly or implicitly therein with which to attempt to validate each item in the sequence in turn can be uniquely determined without examining the content or attributes of that item, and without any information about the items in the remainder of the sequence.       

Custom tool warning: Cannot import wsdl:portType
Detail: An exception was thrown while running a WSDL import extension: System.ServiceModel.Description.XmlSerializerMessageContractImporter
Error: Cannot import invalid schemas. Compilation on the XmlSchemaSet failed.
XPath to Error Source: //wsdl:definitions[@targetNamespace='http://fliqz.com/services/search/20071001']/wsdl:portType[@name='IVideoSearchService']

Custom tool 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://fliqz.com/services/search/20071001']/wsdl:portType[@name='IVideoSearchService']
XPath to Error Source: //wsdl:definitions[@targetNamespace='http://tempuri.org/']/wsdl:binding[@name='basicHttpBinding_IVideoSearchService_20071001']

Custom tool warning: Cannot import wsdl:port
Detail: There was an error importing a wsdl:binding that the wsdl:port is dependent on.
XPath to wsdl:binding: //wsdl:definitions[@targetNamespace='http://tempuri.org/']/wsdl:binding[@name='basicHttpBinding_IVideoSearchService_20071001']
XPath to Error Source: //wsdl:definitions[@targetNamespace='http://tempuri.org/']/wsdl:service[@name='VideoSearchService']/wsdl:port[@name='basicHttpBinding_IVideoSearchService_20071001']

Custom tool error: Failed to generate code for the service reference 'ServiceReference1'.  Please check other error and warning messages for details.

编辑:我做了一些挖掘,我发现了以下链接:

我尝试在第一个链接中遵循ScottAnderson的说明,但无法使用它们生成客户端代理。也许你可以有更好的运气。

似乎原因这不起作用是因为Fliqz使用XmlSerializer而不是DataContract / MessageContract作为其合约定义,而WCF不希望与它们很好地配合并生成不适当的WSDL 。如果您可以控制原始合同,您可以解决问题并继续前进;不幸的是,你可能完全没有运气。

如果您可以获得ServiceContract接口及其公开的类型,您可以手动生成自己的客户端。从我在那里看到的一些班级名称来看,Fliqz似乎在他们的合同中暴露了内部对象,所以我怀疑你可以,他们可以打电话给他们并要求他们提供你可以参考的.dll。

您可以尝试通过分析WSDL和XSD来自己编写接口和数据/消息协定类型。但是看起来它需要做很多工作。

抱歉,我帮不了多忙。这似乎是FCF遗留支持不佳以及Fliqz糟糕的架构/设计的结合。

答案 2 :(得分:2)

尝试将其添加为.NET 2.0 Web Reference。

转到添加服务参考,然后单击“高级”按钮。然后,您可以选择将其添加为.NET 2.0 Web引用。我这样做了,并让它工作。我无法通过标准的“添加服务参考”

答案 3 :(得分:1)

我没有看到任何< wsdl:portType>您的WSDL中的元素 - 可能是问题。

另外,您是从实时URL或磁盘上的某些文件创建服务吗?如果您正在使用“on disk”文件:您是否也获得了此行中引用的“wsdl0”文件:

<wsdl:import namespace="http://fliqz.com/services/search/20071001" location="http://services.fliqz.com/LegacyServices/Services/search/R20071001/service.svc?wsdl=wsdl0"/>

马克