我正在开发我的一个个人项目,但我发现了一些问题。
这是一个n层架构:
WCF服务处于ASP.NET兼容模式。
有什么问题?每个请求都在不同的会话中。我发现因为会话的存储值在每个请求中被重置,正如我之前所说的那样。
我有两个问题:
1) - 显而易见但我需要确认 - 在服务器端调用WCF框架服务的事实是否意味着会话是针对服务器而不是针对每个客户端?
2)第一个问题是每次请求后获得新会话的原因吗?
最后,我是要为该WCF Framework服务禁用ASP.NET兼容模式并开发自己的会话状态管理,这不是一项艰巨的任务,但我不是重新发明轮子的朋友。
提前谢谢。
答案 0 :(得分:1)
WCF的默认实例化模式是Per-Call:每个客户端调用期间都存在服务调用对象。当客户端调用结束WCF调用IDisposable.Dispose
时。实例化类型可以设置为:
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)]
class MyWCFService : IMyWCFContract....
还有两种实例化类型:按会话服务和可共享服务。
您应该为项目使用按会话,因此您可以设置WCF服务:
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession)]
class MyWCFService : IMyWCFContract....
您可以在MSDN上找到更多详细信息 祝你好运