2013-04-20 68 views
0

我创建了一个wcf库,并有1个主机和2个客户端连接到它。在WCF中获取方法返回空

在我的WCF我有一个存储从客户端A发送到WCF消息代码:

private string CustReady; //whether the customer is ready 

,我对此有一个得到一个set方法,如下

public string sendReady(string s_Ready) 
    { 
     CustReady = s_Ready; 
    } 

    //gets state of customer (POS) 
    public string getReady() 
    { 
     return CustReady; 
    } 

客户端A利用sendReady方法并传入一个字符串,然后将其存储在CustReady中。在客户端B中,当有按钮点击并检索CustReady变量内部的字符串时,getReady方法被触发。当我在这两种方法的WCF中放置一个断点时,客户端A会正确存储信息,但是当我按下客户端B上的按钮时,它将返回空值。我想知道是否有人知道为什么?

感谢

+2

如何是你的服务配置为InstanceContextMode?机会是客户端A和客户端B正在访问服务的不同实例。如果你可以发布你的服务代码,我们可以告诉你更多。 – Tim 2013-04-20 20:28:15

+0

你好,我想和你一样,他们正在访问服务的不同实例,我将编辑我的帖子,其中将包含我的服务代码。 – DorkMonstuh 2013-04-20 20:29:53

回答

3

两个客户端使用主机的两个实例,使他们不共享变量。你必须使静态变量或服务器上设置的ServiceBehivorAttributeInstanceContextInstanceContextMode.Single(如果您没有设置ConcurrencyMode到多个可以同时处理的服务只有一个连接。)

[ServiceBehavior(
    ConcurrencyMode=ConcurrencyMode.Multiple, 
    InstanceContextMode=InstanceContextMode.Single 
)] 
    public class BehaviorService : IBehaviorService 
    { 
    //Snip 
    } 
+0

感谢Scott解决了我的问题:) – DorkMonstuh 2013-04-20 20:36:57