我有一个名为 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 之后立即发生异常。
有人遇到过这种情况吗?