在page_load中设置会话

时间:2011-02-10 16:29:01

标签: c# asp.net session login

我在页面中有一个页面宽度,名为Log.aspx:

protected void Page_Load(object sender, EventArgs e)
{

    Session.Abandon();
    Session.Clear();
    string username = "a";
    if (!String.IsNullOrEmpty(username))
    {
        db_user = db.CBR_User
            .Include("CBR_MissioniGruppi")
            .Include("Anagrafica_Dipendente.Extra_dipendente")
            .Include("Anagrafica_Dipendente.Dati_Dipendente")
            .FirstOrDefault(p => p.Anagrafica_Dipendente.Extra_Dipendente.Codice_Fiscale.Equals(username, StringComparison.OrdinalIgnoreCase));
        Session["User"] = db_user;
        Session["t_admin"] = null;
        Response.Redirect("Default.aspx");
    }
}

问题是,如果我使用2个用户名不同的页面启动2次 在Default.aspx页面第二次读取变量Session [“User”]第一次保存。

ES。

1)Launch Log.aspx with username = "a"
-> the session["User"] in Default page has the user with username a
2) Launch Log.aspx with username = "n"
-> the session["User"] in Default page has the user with username a

为什么?

我已经看到,如果我在日志页面中放置一个按钮并且我在点击事件上执行该程序,它就可以工作。

我该如何解决?

感谢

1 个答案:

答案 0 :(得分:0)

你在这里问的问题并不完全清楚。看看你的代码,你很难将用户名的值编码为'a',所以它总是'a'。

string username = "a"; 

如果这不是你的问题,我会想象你有某种竞争条件,你对Session的多次读/写会导致冲突。