C# 会话变量

C# 会话变量,c#,asp.net,session-variables,C#,Asp.net,Session Variables,我在我的Global.asax中定义了会话变量,称为user,如下所示 protected void Session_Start(object sender, EventArgs e) { Session["idMap"] = ""; Session["user"] = ""; } 此外,我还有一个asp:Login,在那里我设置了loggedIn protected void lgnMapZone_LoggedIn(object

我在我的
Global.asax
中定义了会话变量,称为
user
,如下所示

    protected void Session_Start(object sender, EventArgs e)
    {
        Session["idMap"] = "";
        Session["user"] = "";
    }
此外,我还有一个
asp:Login
,在那里我设置了
loggedIn

    protected void lgnMapZone_LoggedIn(object sender, EventArgs e)
    {
        Session.Abandon();
        Session["user"] = lgnMapZone.UserName;
    }

我的问题是,当用户自动初始化时,会调用void session\u启动它并删除我的变量,如何解决此问题???

您可以在会话\u启动中再次设置变量之前检查变量是否已设置。

您可以在会话\u启动中再次设置变量之前检查变量是否已设置。

简单:

内部会话\u开始:

if (Session["user"] != "")
    // Do something else
else
    // Set Session["user"] = "", etc
简单:

内部会话\u开始:

if (Session["user"] != "")
    // Do something else
else
    // Set Session["user"] = "", etc
Session.about()
销毁会话并触发
Session\u oned
事件。当用户注销而不是登录时,应该调用此方法

您可能应该调用
Session.Clear()
,它只会在登录时从会话对象中删除所有值(内容)

这将解决您现在遇到的问题。

会话。放弃()
将销毁会话,并触发
会话ONED
事件。当用户注销而不是登录时,应该调用此方法

您可能应该调用
Session.Clear()
,它只会在登录时从会话对象中删除所有值(内容)

这将解决您现在遇到的问题