我有一個解決方案,其中包括2個項目和2個類文件,通過引用調用。在我的一個項目中,我在Session_Start塊中的Global.asax中有一些代碼,它從數據庫加載一些變量並將它們設置爲會話變量。如果我在Global.asax中放置一個斷點,我可以驗證這些變量實際上是否正確設置。ASP.NET C#會話變量丟失
當我在我的任何代碼隱藏模塊或項目中的類中引用會話變量時,它們都在那裏。但是如果我在引用調用的類之一(本質上是共享類)中引用它們,那麼會話變量都是空的。
我使用HttpContext.Current.Session [「varName」]來訪問類中的變量,就像標準一樣。
有什麼我需要考慮有權訪問這些會話變量?它可能是一個命名空間問題?
那麼,從「關注點分離」的角度來看,好像「其他」項目不應該直接意識到Web環境。你能否將會議中的任何價值傳遞給「其他項目」? – RQDQ
嘗試:System.Web.HttpContext.Current.Session [「varName」]。另外,請注意您嘗試讀取會話的ASP.NET頁面生命週期的哪個階段 - 例如當您嘗試閱讀時會話尚未加載嗎? –
Moe - 我正在根據用於訪問系統的URL來定製登錄屏幕上顯示的徽標。當我通過時,我在global.asax中設置了一個斷點,並首先停止,並設置變量。然後,下一個中斷點是當我的登錄模塊嘗試從數據庫加載徽標時。它從該'其他'共享類調用一個過程來處理圖像加載,並且數據庫名稱爲空。我想我可以嘗試從它正在工作的模塊獲取會話變量,並將它傳遞給加載圖像的類中的方法...我會嘗試。 –