gpt4 book ai didi

c# - WCF 服务中跨 session 持续存在的静态变量

转载 作者:太空狗 更新时间:2023-10-29 18:18:30 26 4
gpt4 key购买 nike

我有一个需要 session 的 WCF 服务

   [ServiceContract(SessionMode = SessionMode.Required) ]

和一些静态字段。我认为通过 session ,静态字段对于每个 session 都将保持不变,但对于不同的 session 会有新的实例。但是,当我有两个不同的客户使用该服务时,我看到的是,当一个客户更改字段值时,此更改也会影响另一个客户。这是进行不同 session 的正常行为吗?或者您认为我的服务甚至可能不会创建不同的 session ?

我正在使用 netTCP 绑定(bind)。

最佳答案

静态变量在整个过程中共享,因此您会看到这种行为。但是如果你设置服务的instance context mode to per-session ,然后将在每个 session 中创建该服务实例及其(非静态)变量。所以这里的 somevar 是 session 独有的:

[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession)] 
public class Service : IService
{
private string sessionVariable; // separate for each session

private static string globalVariable; // shared across all sessions
}

关于c# - WCF 服务中跨 session 持续存在的静态变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17867491/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com