在本文(link)中,Juval Lowy声明PerCall是默认值。但是,在当前文档(link)中,默认值被描述为PerSession。
自WCF发布以来,这是否发生了变化?如果是这样,有人知道理由吗?
我所读到的关于WCF的所有文档都说避免有状态(PerSession)服务,而是支持无状态(PerCall)服务。
我可能只是看错了吗?
感谢任何照明!
更新:我实际上找到了我正在寻找的内容,并将其添加为答案。谢谢!
答案 0 :(得分:3)
我实际上找到了我想要的答案:
查看此link。
我们在六月份的CTP中对此进行了更改。这是推理:
“使用PerCall,在ServiceContract中需要会话的用户将获得一个持续一次调用持续时间的会话,除非他们将InstanceContextMode更改为PerSession。
使用PerSession的 new 默认值,需要会话的用户将获得与会话通道生命周期相关的实例生命周期,正如他们所期望的那样。在合同中不需要会话的用户仍将获得看起来像PerCall的实例生命周期。这种变化的好处是,用户可以在合同上设置会话要求后获得他们期望的实例生命周期,而无需调整InstanceContextMode。“
答案 1 :(得分:1)
我认为逻辑是ServiceBehavior的默认值是perSession,但ServiceContract的会话是NotAllowed,使每个调用生效。
查看MSDN链接,您可以看到该框架的所有版本,ServiceBehavior默认值始终为perSession。
答案 2 :(得分:1)
我可以向您保证,basicHttp通道的默认行为是PerCall,因为basicHttp绑定不支持PerSession实例化。我有一个运行该配置的服务。 见this blog