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

标签 c# wcf session

我有一个需要 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/

相关文章:

c# - 从 COM 调用托管 API

c# - 在网站上上传csv文件并获得结果

asp.net - 如何在 IIS 中托管没有 SVC 文件的 WCF 服务

wcf - WCF中使用session的目的是什么

android - 每次点击而不是每次 session 的 Google Analytics 自定义变量

c# - Windows Phone 8 消息框问题

c# - 如何使用正则表达式在定义的单词之间捕获任意字符串?

WCF 测试客户端显示 IMetadataExchange

powershell - Scope vs Runspace vs Session vs AppDomain

php - Symfony2 - 没有 session cookie 的有状态 API key 身份验证