2013-04-20 65 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