2010-06-10 99 views
0

我創建了一個WCF服務,我希望它在來自客戶端的調用之間保持狀態。我想做到這一點,最簡單的方法是增加該屬性的服務:因爲這是應該在客戶端代理的生命(或超時在極端情況下,保持一個單獨的服務活爲每一個客戶如何維護WCF服務中的每個客戶端狀態?

[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession)] 

案件)。我還添加了一個跟蹤用戶輸入列表的測試函數,並在服務的整個生命週期內將所有輸入字符串串起來。

當我在由visual studio生成的測試客戶端中運行此操作時,我發現我用來保存過去數據的列表將在每次調用時重置。我還需要做些什麼來保持每個會話的狀態?

回答

2

好吧,明白了。我正在使用BasicHttpBinding,它不支持每個會話實例。我把它切換成wsHttpBinding,並且一切都很順利。

+2

它可能工作,但它通常被認爲是「黑客」 - 只要有可能就試圖在服務器後端保持無狀態和/或存儲狀態。不要依賴會話 - 太多可能會出錯的事情,並會破壞您的系統。 – 2010-06-10 05:27:36