2011-05-30 25 views
0

提示請如何在自己託管的WCF中使用會話?我需要實現像會話一樣的ASP.NET(客戶端標識和可能的數據共享)。在WCF中是否有任何本地方式這樣做,或者我必須手動實現此行爲(爲每個請求發送一些唯一值並將它們存儲在某個sessionID存儲中)?提前致謝。 P.S.對不起,英語不好。自我託管的WCF服務中的會話

回答

2

您可以在自託管的WCF中創建會話,但您需要使用具有會話支持的綁定。 WSHttpBinding,NetTcpBinding和NetNamedPipeBindings都支持會話,以及自定義綁定中綁定元素的其他組合。例如,您將無法在BasicHttpBinding中使用會話,因爲您沒有可以利用的基礎ASP.NET會話對象。

+0

感謝您對卡洛斯的回覆,但我不確定這正是我需要的。正如我從各種msdn *文章中可以理解的那樣,WCF會話是在一次代理對象調用期間工作的,所以如果爲每次調用創建代理對象,我將失去一個會話。此外,我可能需要在兩個或更多端點(即代理)之間共享會話。所以,我需要一些唯一的ID來標識每個呼叫的客戶端並不重要使用哪個代理對象。 – Artyom 2011-05-31 07:48:33

+0

我明白了,所以你需要一個產生多個客戶端的會話。在這種情況下,它仍然是可行的,但你必須親自管理會話。在服務器端,您可以使用一些對象,如MemoryCache(http://msdn.microsoft.com/en-us/library/system.runtime.caching.memorycache.aspx)來存儲會話信息,也可以使用一些檢查器(IDispatchMessageInspector)爲所有外發消息(取決於調用所屬的「會話」)編寫唯一標識,並將會話映射到傳入請求,該請求應將該標識作爲SOAP或HTTP標頭。 – carlosfigueira 2011-05-31 15:35:41

+0

非常感謝。我會嘗試這種方法。 – Artyom 2011-06-01 06:11:29