C# 具有WCF和ASP.NET会话状态问题的N层体系结构

C# 具有WCF和ASP.NET会话状态问题的N层体系结构,c#,.net,asp.net,wcf,n-tier-architecture,C#,.net,Asp.net,Wcf,N Tier Architecture,我正在开发我的一个个人项目,我发现了一些问题 它是一个n层体系结构: 框架 WCF框架服务 ASP.NET控件,该控件连接到服务器端的WCF Framework服务 托管该控件的ASP.NET客户端 WCF服务处于ASP.NET兼容模式 有什么问题吗?每个请求都在不同的会话中。我发现这是因为会话的存储值在每个请求中都会重置,正如我前面所述 那么我有两个问题: 1) -某种程度上很明显,但我需要确认-在服务器端调用WCF Framework服务的事实是否意味着会话是针对服务器的,而不是针对每个

我正在开发我的一个个人项目,我发现了一些问题

它是一个n层体系结构:

  • 框架
  • WCF框架服务
  • ASP.NET控件,该控件连接到服务器端的WCF Framework服务
  • 托管该控件的ASP.NET客户端
WCF服务处于ASP.NET兼容模式

有什么问题吗?每个请求都在不同的会话中。我发现这是因为会话的存储值在每个请求中都会重置,正如我前面所述

那么我有两个问题:

1) -某种程度上很明显,但我需要确认-在服务器端调用WCF Framework服务的事实是否意味着会话是针对服务器的,而不是针对每个客户端的

2) 第一个问题是否是每次请求后获得新会话的原因

最后,我打算为WCF框架服务禁用ASP.NET兼容模式,并开发自己的会话状态管理,这不是一项艰巨的任务,但我不是改造轮子的朋友


提前感谢。

WCF的默认实例化模式是每次调用:服务调用对象在每次客户端调用期间都存在。客户端调用结束时,WCF调用IDisposable.Dispose。实例化类型可以设置为:

[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)] 
class MyWCFService : IMyWCFContract....
还有两种实例化类型:每会话服务和可共享服务

您应该为项目使用每个会话,以便设置WCF服务:

[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession)]
class MyWCFService : IMyWCFContract....
您可以在MSDN上找到更多详细信息
祝你好运

谢谢!这听起来是正确的解决方案。稍后我会在家里检查(我是@work)。我现在把它标记为解决方案。