最近使用WCF+NHibernate 时候 发生序列化问题 困扰了好久
客户端有的方法会报 “服务终结点未使用HTTP 绑定造成。。。。” 这个错误
发生的原因大体上是因为:数据内容过大或者是WCF返回值无法序列化造成的
数据量过大:在客户端和服务端配置文件 添加上
<dataContractSerializer maxItemsInObjectGraph="65536000" />
无法序列化这点困扰了我好久,大体感觉是因为数据契约的导致的,通过 Trace Viewer 找到了,发生这些错误的都是因为我有级联属性的字段。
使用 knowntype 每一个类标记太麻烦了 写了一个简单类
WCF:
[DataContract(IsReference = true)] [KnownType("GetKnownType")] class Entity { private static Type[] GetKnownType() { //将自定义对象的程序集下的所有类型标记为KnownType。 return Assembly.Load("WCF.Entity").GetTypes(); } }
NHibernate:
多对一端 lazy = fasle
一对多端 <bag>
实体类:[DataContract(IsReference = true)]
[DataContract(IsReference = true)]