2012-08-25 195 views
0

我是WCF的初學者。我有兩個簡單的服務:添加客戶的名字和姓氏,並返回客戶端的數量。每當客戶添加時,當我測試服務給客戶端時,數量不增加總是一個。下面的代碼:WCF和客戶端代碼

class ClientService : IClientService 
{ 
    List<Client> list = new List<Client>(); 

    public bool SubmitClient(Client client) 
    { 
     list.Add(client); 
    } 

    public int IClientService.GetClient() 
    { 
     return list.Count; 
    } 
} 

客戶端代碼:

protected void Button1_Click(object sender, EventArgs e) 
{ 
    ClientServiceClient channel = new ClientServiceClient(); 
    Client cl = new Client(); 
    cl.FirstName = txtFName.Text; 
    cl.LastName = txtLName.Text; 

    channel.SubmitClient(cl); 
    labbel1.Text=string.Format("Number of clients: {0}"),channel.GetClient()); 
} 
+0

默認實例上下文模式是PerCall意味着每次你做一個服務調用一個新的實例是在服務器中創建的,舊的狀態完全被遺忘了 – VJAI

回答

0

您需要提供在ServiceBehavior屬性InstanceContextMode值。 prolbem是你的列表是一個類級變量,你需要將WCF服務配置爲單實例模式。

  • PerSession(默認):一個新的InstanceContext對象爲每個會話創建。
  • PerCall:在每次調用之前創建一個新的InstanceContext對象,並在每次調用後再使用它。
  • 單個:只有一個InstanceContext對象用於所有傳入呼叫,並且在調用後不會被回收。

這裏是控制的主體鏈路良好的WCF實例/會話:WCF服務的

http://www.codeproject.com/Articles/86007/3-ways-to-do-WCF-instance-management-Per-call-Per