WCF+NHibernate 序列化

最近使用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)]

时间: 2024-09-29 17:51:18

WCF+NHibernate 序列化的相关文章

WCF+Nhibernate循环引用导致序列化的问题

WCF+Nhibernate 在查询中只要涉及到表关联,都会存在一个循环引用而导致客户端不能反序列化的问题. 解决的办法: 1.多对一关联中,设置lazy="false". 2.一对多关联中,配置文件的属性使用bag类型,实体类中对应的属性为强类型的集合IList<类型>,而不能为弱类型IList,否则客户端反序列化生成的代码里面对应的属性为IList<Object>,造成客户端无法反序列化到对应的类型. 3.实体类的数据契约配置加上IsReference=tr

ASP.NET MVC+WCF+NHibernate+Autofac 框架组合(一)

学习了Spring.NET+NHibernate的框架,觉得Spring.NET框架不够轻量,配置来配置去的比较头疼,所以把Spring.NET换成了Autofac框架,同时加入WCF框架整了一个组合. 本来想把NHibernate换成EF的,因为现在普通用的.net 4.0,但是.net 4.0里的EF对Oracle支持没那么好,.net4.5有了oracle新的驱动就挺好用了. 一点点心得,NHibernate也是刚熟悉,给像我一样的新手参考,一起学习,有什么不够合理的地方还请多多指教. 数

Entity Framework在WCF中序列化的问题

问题描述 如果你在WCF中用Entity Framework来获取数据并返回实体对象,那么对下面的错误一定不陌生. 接收对 http://localhost:5115/ReService.svc 的 HTTP 响应时发生错误.这可能是由于服务终结点绑定未使用 HTTP 协议造成的. 这还可能是由于服务器中止了 HTTP 请求上下文(可能由于服务关闭)所致.有关详细信息,请参见服务器日志. 这就是因为在返回数据的时候,序列化失败,导致WCF服务自动停止了. 为什么会序列化失败 为了方便说明,我们先

跟我一起学WCF(7)——WCF数据契约与序列化详解

一.引言 在前面博文介绍到,WCF的契约包括操作契约.数据契约.消息契约和错误契约,前面一篇博文已经结束了操作契约的介绍,接下来自然就是介绍数据契约了.所以本文要分享的内容就是数据契约. 二.数据契约的介绍 在WCF中,服务契约定义了可供调用的服务操作方法,而数据契约则是定义了服务端和客户端之间传送的自定义类型,在WCF项目中,必不可少地是传递数据,把客户端需要传递的数据传送到服务中,服务接收到数据再对其进行处理.然而在WCF中,传递的类型必须标记为DataContractAttribute属性

WCF序列化与反序列化问题

转自:http://www.cnblogs.com/wangweimutou/p/4505447.html WCF包含很多封装的内部机制,这些是我们在编写程序时不会经常看到的.比如上一篇讲解的Message.这一篇我将讲解WCF的另一种内部机制,WCF的序列化和反序列化.通常我们在编写WCF服务程序的时候,我们并没有手动对WCF的数据传递做序列化和反序列化的操作,这是因为WCF默认通过序列化引擎DataContractSerializer帮我们做了这些操作,使得开发人员只需关注数据对象定义本身(

WCF Ajax Json的应用

WCF Ajax 的应用网上实际上有很多, 如: Ajax与Wcf交互-JSON jQuery调用WCF服务传递JSON对象 WCF以Json格式返回对象,客户端以JS调用显示 关于SoapUI的介绍也有 如: 使用SoapUI 测试Web Service 今天一同事问我wcf 里面对象的序列化的问题. 如WCF的服务code: 这是web.config文件必须添加一下配置: <serviceBehaviors>        <behavior name="">

[.net&#160;面向对象程序设计进阶] (9) 序列化(Serialization) (一) 二进制流序列化

[.net 面向对象程序设计进阶]  (9)  序列化(Serialization) (一) 二进制流序列化 本节导读: 在.NET编程中,经常面向对象处理完以后要转换成另一种格式传输或存储,这种将对象转向其他数据格式的过程,即序列化(Serialization). 与之相反的过程就是反序列化(Deserialization).掌握和利用好序列化和反序列化的方法,对提高面向编程技术很有益处. 读前必备: A.类和类的实例  [.net 面向对象编程基础]  (9) 类和类的实例  B.类的成员

WCF基础之数据协定

数据协定最重要的当然就是DataContract和DataMember.这两个特性能应用到类.结构和枚举.这个两个特性跟服务契约的特点是一样的,只有被DataContract标记的类和类中被标记DataMember的属性.字段和事件才能被wcf的序列化引擎进行序列化和反序列化. [DataContract] public class UserInfoModel { private int age; [DataMember] public int Age { get { return age; }

WCF消息压缩

对于WCF应用来说,传输前压缩请求消息和回复消息,不但可以降低网络流量,也可以提高网络传输的性能 一.消息压缩方案 二.用于数据压缩与解压缩组件 三.用于消息压缩与解压的组件 四.用于对请求/回复消息压缩和解压缩的组件 五.将CompressionMessageFormatter用于WCF运行时框架的操作行为 六.查看结构压缩后的消息 七.扩展 一.消息压缩方案 消息压缩在WCF中的实现其实很简单,我们只需要在消息(请求消息/回复消息)被序列化之后,发送之前进行压缩:在接收之后,反序列化之前进行