我在应用程序中构建了许多WCF服务.直到最近,用作服务中许多操作的参数的大多数类都没有应用DataContract或DataMember属性.
现在,我连续做了一些更改,突然之间WCF抱怨他无法序列化我的类.
有谁知道配置中的任何更改,甚至ServiceContract,OperationContract等是否会导致WCF对它可以序列化的类变得挑剔?
我宁愿不需要这些类中的属性(它们应该是尽可能纯的C#类).
另外值得注意的是,如果我在源代码控制中返回到以前的版本,WCF会回到"正常"状态,所以我认为它不是机器/环境的东西.
在不使用[DataContract]和[DataMember]属性的情况下创建WCF数据协定的功能是在.NET 3.5 SP1中添加到WCF的功能.因为在将代码还原到以前的版本时,一切都适合您,我假设您已经使用了至少该版本.
尽管如此,为了使类可以由WCF序列化,该类必须满足此处列出的几个要求.数据合同类的主要要求是:
[IgnoreDataMember]并将从WCF序列化中排除.您可以通过使用DataContractSerializer该类手动执行序列化来获取有关无法序列化的更多信息.有关更多详细信息和代码示例,请参阅此文章 另一种方法是标记所有成员[IgnoreDataMember]并逐渐从成员中删除属性,直到序列化失败,这将告诉您哪个成员导致了问题.
| 归档时间: |
|
| 查看次数: |
106 次 |
| 最近记录: |