2010-10-29 74 views
1

我正在實現自定義成員資格和角色提供程序,我需要將所有角色/成員身份信息存儲在用戶會話中。如何訪問Web項目外的ASP.Net會話對象(類庫)

我在一個類庫項目(不同於網站項目)中實現這些自定義提供程序,並需要訪問它們中的會話。這個想法是在會話中首次從數據庫中檢索角色/會員相關信息。

當我嘗試訪問使用會話

System.Web.HttpContext.Current.Session 

我得到這是一個空對象(對象引用未設置到對象的實例。

爲什麼會議談到了將空?

+5

你應該可以像這樣訪問會話,除非你不在web上下文中(例如分離的線程) – 2010-10-29 14:29:52

+2

它是''Session''是'null'還是'HttpContext.Current' ?如果是上下文,那麼你的代碼不在處理請求的線程中運行。 – 2010-10-29 14:31:03

+0

上下文本身不爲空。只有上下文中的會話對象爲空。 – 2010-10-29 15:15:31

回答

0

可能是,如果你有會話關閉時,例如處理器或也許是頁面有沒有使用會話的設置。

否則它通常應該返回一個會話對象,我在自己的項目中使用了相同的解決方案。

但你應該總是有代碼來測試空指針,以防萬一。

您是否測試過您獲得了HttpContext?

+0

是的,我得到的HTTP上下文對象和其他屬性確實有相關的值。只是會議結果是空的。會話對象在頁面生命週期的哪個點可用?難道是這個代碼被調用之前比? – 2010-10-29 15:18:25

+1

可能但不太可能。這個頁面描述了頁面的生命週期,包括HttpContext的創建地址http://msdn.microsoft.com/en-us/library/bb470252.aspx,而且我無法在HttpContext完全填充之前運行代碼。 – 2010-10-29 23:42:24