【发布时间】:2013-07-18 00:30:00
【问题描述】:
我有一个名为 ExceptionsJSONService 的 WCF 服务。与我的解决方案中定义的所有其他服务不同,由于某种原因,它无法在 javascript 中实例化客户端。
这失败了:
var service = new ExceptionsJSONService();
带有预期的对象。我一直在试图弄清楚为什么会发生这种情况,并检查了我在整个项目中的所有定义,一切看起来都很好,并且与我定义的所有其他服务一致(它们都有效)。
然后我检查了svclog文件,发现有错误。异常类型为:
System.Runtime.Serialization.InvalidDataContractException, System.Runtime.Serialization,版本=4.0.0.0,文化=中性, PublicKeyToken=b77a5c561934e089
异常信息是:
类型 'System.Data.Entity.DbSet`1[CCMModel.AttachmentDoc]' 不能 序列化。考虑用 DataContractAttribute 标记它 属性,并标记您想要序列化的所有成员 DataMemberAttribute 属性。如果类型是集合,请考虑 用 CollectionDataContractAttribute 标记它。见 其他受支持类型的 Microsoft .NET Framework 文档。
CCMModel 是命名空间,而 AttachmentDoc 是我的实体之一。不过,问题不在于 AttachmentDoc。它只是按字母顺序浏览实体列表。我将一个实体从 Attachments 重命名为 RAttachments,它只是继续使用 AttachmentDoc 引发异常。
问题是,在我的代码中,我没有尝试序列化任何 EF 实体。我序列化的所有类都有 DataContracts。我认为两者相关的原因是在 Open ServiceHost 'ExceptionsJSONService' 出现在 svclog 之后立即发生异常。
有人遇到过这种情况吗?
【问题讨论】:
标签: .net json wcf entity-framework