2011-09-27 70 views
6

我正在使用WCF服務(通過WebGet屬性)。從WebHttpBinding訪問WCF服務中的會話

我試圖從WCF服務訪問會話,但HttpContext.Current爲null

我加入AspNetCompatibilityRequirements和編輯的web.config,但我仍然無法訪問會話。

是否可以一起使用WebGet和Session?

謝謝!

回答

5

是的,這是可能的。如果編輯web.config

<system.serviceModel> 
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" /> 
</system.serviceModel> 

,並添加AspNetCompatiblityRequirements,該HttpContext.Current應該可用。

再次檢查一切,也許你已經把屬性放在錯誤的地方(界面而不是類?)。

+2

我有屬性,但沒有會話。 WebHttpBinding是否與會話兼容? –

4

帶會話的REST滿服務?

見精彩的討論在這裏:Can you help me understand this? "Common REST Mistakes: Sessions are irrelevant"

http://javadialog.blogspot.co.uk/2009/06/common-rest-mistakes.html(6點)

http://www.peej.co.uk/articles/no-sessions.html

報價保羅Prescod:

會議是無關緊要的。

應該不需要客戶端「登錄」或「啓動連接」。在每條消息上自動完成HTTP認證 。客戶端應用程序是 資源的消費者,而不是服務。因此沒有任何登錄! 假設您正在預訂REST Web服務的航班。您 不會創建到該服務的新「會話」連接。而是你問 「行程創建者對象」爲你創建一個新的行程。你可以從 開始填充空白,但然後在網絡的其他地方獲得一些完全不同的組件來填充其他空白。有 沒有會話,所以在 客戶端之間沒有遷移會話狀態的問題。服務器 中也沒有「會話關聯性」問題(儘管仍然存在負載平衡問題)。