无法从http:// localhost:55408 / ShopProcessService.svc获取元数据

时间:2014-03-13 18:14:55

标签: c# wcf

我在尝试启动服务的WCF测试客户端时遇到以下错误,并让我发疯。我在网上搜索过,听起来像HeaderRecord的DataContract名称在我的项目中存在两次。

但是,在此名称上执行“查找全部”只会显示一个实例。

有人可以帮我解决这个错误吗。我的智慧结束了......

DataContract for type 'Ryder.Enterprise.DataTransferObjects.HeaderRecord[]' cannot be added to DataContractSet since type 'System.Collections.Generic.List`1[[Ryder.Enterprise.DataTransferObjects.HeaderRecord, Ryder.Enterprise.DataTransferObjects, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]' with the same data contract name 'ArrayOfHeaderRecord' in namespace 'http://www.ABC.com/SOA/DataContracts/2014/02/17' is already present and the contracts are not equivalent.

我的项目中也没有名为ArrayOfHeaderRecord的名称的实例。

编辑1

只是为了咯咯笑,我决定将此特定调用的操作和服务合同删除到方法中,并且WCF测试客户端成功启动。当我重新签订合同时,那是我收到错误的时候,但我仍然不知道为什么???

我甚至回到了这个方法的旧版本源代码(当它出现在WCF测试客户端时),但也失败了。

我重启了我的机器,同样的事情正在发生。我不明白这个错误。即使我放回合同并且只是在我的班级中有一个“shell”,我也会得到同样的错误。

我不知道该怎么办???

编辑2 - 决议

在追踪我的解决方案中的所有内容之后,我发现错误是什么...... 我的类列出如下:注意不应该存在的List对象的实现。

public class HeaderRecordCollection : List<HeaderRecord>
    {
        private List<HeaderRecord> headerRecords;



        public HeaderRecordCollection()
        {
        }


        [DataMember(Name = "HeaderRecords")]
        public List<HeaderRecord> HeaderRecords
        {
            get
            {
                return headerRecords;
            }
            set
            {
                headerRecords = value;
            }
        }
    }

我只是删除了那里只有一个列表。从现在起只有一个对象列表,没有来自WCF的投诉!

1 个答案:

答案 0 :(得分:1)

迟了两年,但是嘿;)

为CollectionDataContract替换属性DataContract