会话频道是如何真正工作的
本文关键字:工作 何真正 频道 会话 | 更新日期: 2023-09-27 18:36:37
我未能从这篇 MSDN 文章中一遍又一遍地理解我们为什么要使用它以及它是如何工作的:
- 带会话的数据报
- 会话的请求-响应
- 带会话的双工
假设我有一个服务
InstanceContextMode = InstanceContextMode.PerSession
ConcurrencyMode=ConcurrencyMode.Single
如果我有 2 个客户端用于此服务,并且它们同时激活该集合中的方法,为什么其中一个要等到服务完成另一个请求?PerSession + 2 个客户端 = "2"个服务,每个客户端都有 ConcurrencyMode.Single。我的错误在哪里?
至于您问题的 B 部分,这里有一系列关于 WCF 实例化、并发和限制的优秀文章:
- 第 1 部分(实例化)
- 第 2 部分(并发)
- 第 3 部分(限制)
更新
检查服务上每个客户端调用的实例上下文 ID、会话 ID 和线程 ID,并首先验证它们是否不同。
要检查实例上下文 ID,请执行以下操作:
OperationContext.Current.InstanceContext.GetHashCode()
要检查会话 ID,请执行以下操作:
OperationContext.Current.SessionId
要检查线程 ID,请执行以下操作:
Thread.CurrentThread.ManagedThreadId
如果每个客户都不同,那么我无法解释您遇到的问题。