【问题标题】:N-tier architecture with WCF and ASP.NET session state problem具有 WCF 和 ASP.NET 会话状态问题的 N 层架构
【发布时间】:2011-01-18 09:05:40
【问题描述】:

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

这是一个 n 层架构:

  • 框架。
  • WCF 框架服务。
  • 在服务器端连接到 WCF 框架服务的 ASP.NET 控件。
  • 托管该控件的 ASP.NET 客户端。

WCF 服务处于 ASP.NET 兼容模式。

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

那么我有两个问题:

1) - 有点明显,但我想要确认 - 在服务器端调用 WCF 框架服务的事实是否意味着会话是针对服务器而不是针对每个客户端的?

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

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

提前谢谢你。

【问题讨论】:

    标签: c# .net asp.net wcf n-tier-architecture


    【解决方案1】:

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

    [ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)] 
    class MyWCFService : IMyWCFContract....
    

    还有另外两种实例化类型:Per-Session Services 和 Shareable Services。

    您应该为您的项目使用 Per-Session,这样您就可以设置您的 WCF 服务:

    [ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession)]
    class MyWCFService : IMyWCFContract....
    

    您可以在 MSDN 上找到更多详细信息 祝你好运

    【讨论】:

    • 谢谢!这听起来像是正确的解决方案。稍后我会在家里检查一下(我是@工作)。我暂时标记为解决方案。
    猜你喜欢
    • 2011-05-14
    • 1970-01-01
    • 2011-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-05
    相关资源
    最近更新 更多