c# – 两个WCF方法之间的全局变量
发布时间:2020-12-15 04:35:48 所属栏目:百科 来源:网络整理
导读:我在WCF服务中有两个方法说 Method1(){ _currentValue = 10;}Method2(){return _currentValue;} 我有一种情况,我需要在Method1()中设置一个值,并在Method2()中读取它. 我尝试使用静态变量,如public static int _currentValue,我能够读取Method2()中Method1()
我在WCF服务中有两个方法说
Method1() { _currentValue = 10; } Method2() { return _currentValue; } 我有一种情况,我需要在Method1()中设置一个值,并在Method2()中读取它. 我尝试使用静态变量,如public static int _currentValue,我能够读取Method2()中Method1()中设置的值. 但问题是,我希望这个变量像每个请求的单独实例变量一样做出反应.即,现在下面是问题 浏览器1: - Method1() is called => sets _currentValue = 10; - Method2() is called => returns _currentValue = 10; 浏览器2: - Method2() is called => returns _currentValue = 10; 实际上,值集是浏览器1是静态的,所以在浏览器2中 我想要实现的是变量应该像每个请求的新实例(从每个浏览器调用时).在这种情况下我应该使用什么?会话? 解决方法
您将需要一些相关机制,因为您有两个完全不同的会话调用不同的方法.所以我建议使用两个呼叫者都知道的私钥.
我有点不可能知道那个密钥是什么,因为我无法从你的问题中收集任何东西,所以只有你知道,但简单的事实是你需要相关性.现在,一旦你确定他们可以使用什么,你就可以做这样的事情. public class SessionState { private Dictionary<string,int> Cache { get; set; } public SessionState() { this.Cache = new Dictionary<string,int>(); } public void SetCachedValue(string key,int val) { if (!this.Cache.ContainsKey(key)) { this.Cache.Add(key,val); } else { this.Cache[key] = val; } } public int GetCachedValue(string key) { if (!this.Cache.ContainsKey(key)) { return -1; } return this.Cache[key]; } } public class Service1 { private static sessionState = new SessionState(); public void Method1(string privateKey) { sessionState.SetCachedValue(privateKey,{some integer value}); } public int Method2(string privateKey) { return sessionState.GetCachedValue(privateKey); } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |