0

質問のタイトルがはっきりしないのは本当に申し訳ありませんが、私自身は少し混乱しています。

私はIISで自分のWebサイトを実行しており、その上部に現在ログインしているユーザーのユーザー名が表示されています。私のWebサイトはローカルサーバーでホストされており、さまざまなユーザーが同時にアクセスしています。

問題

ユーザーがサイトを開くたびに、最近サイトにアクセスしたばかりの前のユーザーのユーザー名が表示されます。

コード

これは、global.asaxファイルで使用しているコードです。

       void Session_Start(object sender, EventArgs e)
    {
        // Code that runs when a new session is started        
        // code to get the current user name when running from IIS
        System.Security.Principal.IPrincipal _User;
        _User = System.Web.HttpContext.Current.User;
        System.Security.Principal.IIdentity _Identity;
        _Identity = _User.Identity;
        string _Value;
        _Value = _Identity.Name.Substring(_Identity.Name.IndexOf(@"\") + 1);

 DataTable dtId = CetDatabase.GetEmployeDetails(_Value);
        if (dtId.Rows.Count > 0)
        {
            Session["teamid"] = dtId.Rows[0]["TEAMID"].ToString();
            Session["projectid"] = dtId.Rows[0]["PROJECTID"].ToString();
            Session["memberid"] = dtId.Rows[0]["MEMBERID"].ToString();
            CeteraQMS.Main_Master.projectname = dtId.Rows[0]["PROJECTNAME"].ToString();
            CeteraQMS.Main_Master.username = _Value;
            CeteraQMS.Main_Master.teamname = dtId.Rows[0]["TEAMNAME"].ToString();
            Session["role"] = dtId.Rows[0]["MEMBERROLE"].ToString();
        }
        else
        {
            Response.Redirect("AccessDenied.aspx");
        }
    }

どこが間違っているのかわかりません。

よろしくお願いしますAkhil

4

1 に答える 1

1

これはここです:

CeteraQMS.Main_Master.username = _Value;

静的オブジェクトにプロパティを設定するように見えます。Main_Masterプロパティは、クラスの静的プロパティのように見えます(CeteraQMSそれらが何であれ)。ご存知のように、静的オブジェクトはアプリケーション内のすべてのユーザー間で共有されます。したがって、現在のユーザーのみに固有の状態を格納するために静的オブジェクトを使用しないでください。ユーザー名とその他のユーザー固有のプロパティを保存する場合は、、、、および値を使用した場合と同じように、それらをセッションに保存することをおteamid勧めしprojectidます。memberidrole

于 2012-07-27T08:16:50.683 に答える