2

我在使用 WCF 服务时遇到此错误。这是我使用 Microsoft Service Trace Viewer 查看错误详细信息时得到的错误报告:

运行 WSDL 导入扩展时引发异常:System.ServiceModel.Description.DataContractSerializerMessageContractImporter 错误:引用类型列表包含多个类型,在命名空间“ http://schemas.datacontract.org/2004 ”中具有数据协定名称“EchoAddress” /07/WorldVision.NewZealand.CIMS.Common.Entities '。需要排除除以下类型之一之外的所有类型。只有匹配类型可以是有效引用:“CIMS.CrmService.EchoAddress, App_WebReferences.k4hj-nad, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null”(匹配)“CIMS.AddressService.EchoAddress, App_WebReferences.k4hj-nad ,版本=0.0.0.0,文化=中性,PublicKeyToken=null"(匹配)

看起来有两个名为“EchoAddress”的单独类,我使用 [DataContract] 属性将它们定义为 WCF DataContracts,它们都存在于 WorldVision.NewZealand.CIMS.Common.Entities 命名空间中。我检查过,事实并非如此。该错误还说我需要排除以下类型之一:

CIMS.CrmService.EchoAddress CIMS.AddressService.EchoAddress

但我只在 WorldVision.NewZealand.CIMS.Common.Entities 命名空间中声明了一次“EchoAddress”类。看起来这些是对同一类型(EchoAddress)的引用,在“CrmService”和“AddressService”中,它们是我在主项目中作为“服务引用”引用的两个独立的 WCF 服务。

这是 EchoAddress 类的类型声明,它在单独的项目中声明,然后由包含实际 WCF 服务的项目引用。然后我的主项目将服务引用为服务引用:

[DataContract]
public class EchoAddress
{
    [DataMember]
    public string AddressType { get; set; }
    [DataMember]
    public Dictionary<string,string> AddressLines { get; set; }

    ...
}

我尝试了以下方法:

有任何想法吗?

4

1 回答 1

1

当我们的服务复杂性增加时,由于诸如此类的各种神秘问题,我们完全放弃了添加服务引用方法。原因是缺乏控制,幸灾乐祸和错误。如果您主要使用 .net world 的服务,请观看以下视频

http://www.dnrtv.com/default.aspx?showNum=122

这也将为您提供大量内部信息并帮助调试 wcf 问题。一旦你采取行动,你将永远不会回来!

于 2012-09-26T04:03:42.750 回答