2012-03-23 6 views
3

システムには、現在ログインしているユーザー(Windowsユーザーではないユーザー)のシングルトンがあります。レガシコードから共有変数を削除するにはどうすればいいですか?

数百のデータアクセスクラスファイルで、これはデータベースに送信される各要求に対してCreatebyIDとEditbyIDを設定するために使用されます。各クラスには2つの値が設定されていますが、ほぼすべてのクラスは1つのベースを継承しています。

これは長年にわたって企業のデスクトップアプリケーションでうまくいきましたが、新しいWebアプリケーションで同じデータアクセスクラスが使用された場合、現在ログされているユーザーはすべてのユーザーセッションで共有され、問題を引き起こすことなく変更できませんでした。

DAL全体を大幅に書き直すことなく、すべてのインスタンスに現在のユーザー(またはユーザーID)を渡すことなく、または各クラスのEditbyIDプロパティを保存ごとに設定することなく、コードをリファクタリングする方法を教えてください。

+1

あなたは[ 'HttpContext.Current.Session'](http://msdn.microsoft.com/en-us経由/セッション変数を設定します静的プロパティを使用することができます/library/system.web.httpcontext.session%28v=vs.100%29.aspx)。 –

答えて

1

HttpContext.Current.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

ウェブアプリケーション(デスクトップアプリケーションではない)だったかどうかをテストする必要がありますが、これが動作することがわかります。ありがとう – John

関連する問題