2011-10-27 72 views
2

如果我將servis實例設置爲Per Session或Single,我可以在會話中的服務實例之間發送一些數據?它應該在Asp.net會話中完成 - HttpContext.Current.Session 或wcf有自己的會話嗎?在wcf中使用會話

+0

oK,據我所知,但我可以使用Wcf會話像asp一樣並將數據保存在其中嗎? – netmajor

回答

9

正如我所說 - WCF不是ASP.NET,它的會話處理有很大的不同。雖然ASP.NET會話和WCF會話被稱爲相同 - 它們的用途和用處大不相同。

閱讀MSDN頁面Using Sessions in WCF瞭解更多詳情。

一句話如下:沒有與WCF會話關聯的通用數據存儲。 - 所以答案是否定的 - WCF中的會話是用於數據存儲的而不是

WCF會話僅僅是將幾個消息「捆綁」在一個對話中。默認情況下,通過「per-call」模型,每個WCF服務請求都會得到自己的,新實例化的服務類實例來處理請求,並且在返回答案後,該服務類實例將被釋放。使用會話避免了這一點 - 處理會話第一次調用的服務類實例將在服務器端保持活動狀態(並因此也佔用服務器上的內存),並將處理同一會話中的所有後續請求。一般

WCF和Web服務但是最好是無國籍,這樣的會議是有點在一個合適的SOA環境中一個古怪的建築 - 這是最有可能的,爲什麼在WCF會議也遠遠不及ASP有用。 NET會話用於Web應用程序。

爲了保持無狀態並支持每個調用方法(首選最佳實踐),如果您需要在調用之間存儲數據,請將其存儲在持久存儲區(例如數據庫)中,並在需要時從該存儲區取回上。

5

如果您在IIS中託管服務,則可以啓用ASP.Net兼容性模式。這將允許您使用ASP.Net會話狀態,就像在Web應用程序中一樣。

+0

如何啓用ASP.Net兼容性模式? –