1

从这篇 MSDN 文章中,我一遍又一遍地无法理解我们为什么要使用它以及它是如何工作的:

  1. 带有会话的数据报
  2. 请求-响应会话
  3. 与会话双工

假设我有一个服务

InstanceContextMode = InstanceContextMode.PerSession
ConcurrencyMode=ConcurrencyMode.Single

如果我有 2 个用于此服务的客户端,并且他们同时激活了该服务中的一个方法,为什么其中一个要等到服务完成另一个请求?PerSession + 2 个客户端 = 每个都有 ConcurrencyMode.Single 的“2”个服务。我的错误在哪里?

4

1 回答 1

2

至于您问题的 B 部分,这里有一系列关于 WCF 实例化、并发和节流的优秀文章:

更新

检查每个客户端调用的服务实例上下文 ID、会话 ID 和线程 ID,并首先验证它们是否不同。

要检查实例上下文 ID:

OperationContext.Current.InstanceContext.GetHashCode()

检查会话 ID:

OperationContext.Current.SessionId

要检查线程 ID:

Thread.CurrentThread.ManagedThreadId

如果每个客户的它们都不同,那么我无法解释您遇到的问题。

于 2012-06-08T12:21:18.303 回答