2010-08-19 116 views
2

我有一個帶有5個.ashx HTTPHandlers實現IRequiresSessionState或IReadOnlySessionState的ASP.NET應用程序。在HttpHandlers中保留會話變量

在調用第一個處理函數時,我創建一個變量並將其存儲在會話中。

當我調用下一個HttpHandler時,該變量在會話對象中不可用。

我使用context.Session。

我有一個global.asax我檢索sessionId。

有沒有辦法在HttpHandlers之間保存會話變量,還是每個Handler都有自己的會話?

回答

3

了,得心臟病的這個位置了很好的討論:

http://weblogs.asp.net/ashicmahtab/archive/2008/09/18/how-to-use-session-values-in-an-httphandler.aspx

基本上,你需要做的是這樣的:

public class MyHandler:IHttpHandler,IRequiresSessionState 

HTH的。

這應該在處理程序之間保持會話狀態。也就是說,當您登錄時,只有一個會話可用於您進入該域的所有請求。我建議您驗證您確實已登錄。緩存當然會起作用,因爲這對所有會話都很常見,但在服務器上會更加昂貴,因爲它不會輕易消失。

+1

我已經繼承了IRequiresSessionState。我想要的是保持跨HTTPHandler的會話值,因爲HTTPHandler的每個請求獲得一個新的會話。基本上我已經決定使用應用程序緩存來代替。 – User48765902 2010-08-20 13:10:57