当前位置导航:炫浪网>>网络学院>>网页制作>>ASP.NET教程

WCF 关于自定义MessageHeader支持

欢迎进入.NET社区论坛,与200万技术人员互动交流 >>进入 我们在项目中有些公共信息可以不通过方法参数提供,将这些信息封装到MessageHeader,通过客户端提交给Server。这种情况下我们需要注意WCF不同的实例模式、会话模式对Header的支持情况:
  
  实力模式(InstanceContextMode)PerCall、PerSession支持Header,但是Single不支持自定义header,表现是服务器无法获取Header内容
  
  另外如果在ServiceContract中启用会话模式(SessionMode)声明,那么SessionMode.NoAllowed、SessionMode.Allowed两种模式下是可以接收到Header的,但是SessionMode.Required模式无法接收Header,给我的感觉是Session跟messageheader有冲突。
  
  建议:InstanceContextMode采用PerCall,而SessionMode采用NoAllowed;如果我们不做显示声明InstanceContextMode默认采用PerSession,而SessionMode采用Allowed
  
  在PerCall、PerSession、Single三种模式中,PerCall是性能最高的,节省资源,支持系统的可伸缩性。由于服务实例的生命周期只存在于一次调用期间,特别对于那些持有昂贵资源的服务实例而言,这种方式可以有效地提高系统性能。销毁服务实例时,WCF不会断开与客户端的连接。
相关内容
赞助商链接