我開發使用2個個子項目的應用架構: 一)asp.net web應用程序(它包括用戶界面和業務邏輯)和 B)類庫。 (它覆蓋數據訪問層)訪問類庫中的會話。
後系統用戶成功登錄時,用戶信息被存儲在會話對象。
我面臨的問題是,當我嘗試訪問類庫項目(數據訪問層)會話對象時,它總是返回null。
我需要訪問類庫項目中的會話對象,因爲,在我的情況下,每個用戶都有自己的用戶名和密碼的數據庫訪問(出於安全原因);
那麼,如何如何閱讀和/在類庫項目
我開發使用2個個子項目的應用架構: 一)asp.net web應用程序(它包括用戶界面和業務邏輯)和 B)類庫。 (它覆蓋數據訪問層)訪問類庫中的會話。
後系統用戶成功登錄時,用戶信息被存儲在會話對象。
我面臨的問題是,當我嘗試訪問類庫項目(數據訪問層)會話對象時,它總是返回null。
我需要訪問類庫項目中的會話對象,因爲,在我的情況下,每個用戶都有自己的用戶名和密碼的數據庫訪問(出於安全原因);
那麼,如何如何閱讀和/在類庫項目
使用System.Web.HttpContext.Current.Session
對象寫入會話對象。
它只給會話對象提供參考。該sesion對象值始終爲空 – 2012-08-13 08:49:43
您不會從此處獲取當前會話值。 ü只得到僅供參考 – 2017-12-13 16:41:42
首先,正如Peri正確地注意到的那樣 - 您需要再次考慮是否爲每個用戶分別登錄數據庫是一個好主意 - 因爲您連接池鬆動(不同用戶將無法重新使用現有連接 - 並且創建一個新的sql連接非常昂貴)。
如果你真的想保持獨立的數據庫用戶,我想創建接口從數據訪問抽象會話:
public interface ILoginDataService
{
LoginData Current { get; }
}
而實施將來自會議通過的登錄數據。通過這種方式,您不會在數據訪問邏輯中擁有會話依賴性,因此它將更具可測試性,您也可以分別考慮問題。
這是我在庫中用於獲取會話信息的代碼。
public static string Entity()
{
string entity = "";
HttpContext httpContext = HttpContext.Current;
if (httpContext.ApplicationInstance.Session.Count > 0)
entity = httpContext.ApplicationInstance.Session["EntityCode"].ToString();
return entity;
}
這適用於我+1 – Zafar 2017-05-31 23:25:36
你根本做不到,唯一的辦法就是通過web項目調用類庫的具體方法,並將會話的值傳遞給該方法。 – yogi 2012-08-13 08:46:52
如果這個應用程序有很多用戶,我會重新考慮爲每個用戶登錄數據庫。您以這種方式禁用連接池。 – 2012-08-14 05:37:57
我面臨着完全相同的問題,你找到任何解決方案,Bikash? – Akbari 2015-12-14 06:57:10