为 WCF 客户端强制实施单独的会话

本文关键字:施单独 会话 WCF 客户端 | 更新日期: 2023-09-27 18:36:40

我正在测试我的 WCF 服务,我想向我的 WCF 服务发送两个(虚拟)并行请求。但是,我的InstanceMode = PerSession很好,我不想更改服务行为。

但是,我的问题是 - 创建两个代理客户端对象是否强制执行单独的会话?或者是否应该采取其他措施来通过不同的客户端会话发送两个请求?我创建了一个示例 C# 控制台应用程序来测试这一点:

MyService client = new MyService();
MyService  client1 = new MyService();
client.GetResultsAsync();
client1.GetResultsAsync();

为 WCF 客户端强制实施单独的会话

很遗憾,您的要求禁止使用可以解决此问题的主要功能 - 即 InstanceMode = PerCall .

每个 WCF 服务行为 - 实例和并发管理:

使用默认设置 InstanceMode = PerSessionConcurrencyMode = ConcurrencyMode.Single 然后"很容易得出结论,每个客户端仅在每个客户端的一个线程上执行自己的会话。

每个编程 WCF 服务 - 第 3 版第 177 页:

"当客户端为配置为会话服务的服务创建新代理时,客户端将获得一个新的专用服务实例,该实例独立于同一服务的所有其他实例"