2012-03-23 62 views
3

在系統中,當前登錄的用戶(我們自己的用戶不是windows用戶)包含共享實例的單身人士。如何從遺留代碼中刪除共享變量

在幾百個數據訪問類文件中,這用於爲發送到數據庫的每個請求設置CreatebyID和EditbyID。幾乎所有的類都繼承了一個基礎,儘管此時在每個類中都設置了這兩個值。

對於公司桌面應用程序來說,這一切都很好,但是當新Web應用程序使用相同的數據訪問類時,當前登錄的用戶在所有用戶會話中共享,並且無法更改而不會造成問題。

如何在不顯着重寫整個DAL的情況下重構代碼,並且無需將每個實例的當前用戶(或用戶ID)傳遞給每個實例或設置每個類的EditbyID屬性。

+1

你可以使用它的get/set通過Session變量的靜態屬性['HttpContext.Current.Session'](http://msdn.microsoft.com/en-us /library/system.web.httpcontext.session%28v=vs.100%29.aspx)。 – 2012-03-23 14:59:45

回答

1

您可以使用通過HttpContext.Current.Session獲取/設置Session變量的靜態屬性。

例如:

public class DAL 
{ 
    public static int CreatebyID 
    { 
     get 
     { 
      return (int)HttpContext.Current.Session["CreatebyID"]; 
     } 
     set 
     { 
      HttpContext.Current.Session["CreatebyID"] = value; 
     } 
    } 
    public static int EditbyID 
    { 
     get 
     { 
      return (int)HttpContext.Current.Session["EditbyID"]; 
     } 
     set 
     { 
      HttpContext.Current.Session["EditbyID"] = value; 
     } 
    } 
} 
+0

我需要測試它是否是一個web應用程序(而不是桌面應用程序),但我可以看到這個工作。謝謝 – John 2012-03-23 15:08:13