变量变为空

Taq*_*tes 1 c# asp.net asp.net-mvc

我的DataEntityLayer中有一些变量,例如对所有用户都是通用的

public class DataEntityLayer : System.Web.UI.Page
{
    public string UserName
        {
            get
            {
                if (Session["UserName"] == null)
                {
                    GotoLoginPage();
                    return null;
                }
                else
                    return Session["UserName"].ToString();
            }

            set { Session["UserName"] = value; }
        }
}
Run Code Online (Sandbox Code Playgroud)

我正在使用此变量在用户登录时显示用户名,这工作正常,但经常变为空.我怎样才能避免这种情况,或者让我知道在我的图层中声明变量的方法,以便在用户登录时显示用户名.

Joh*_* Mc 5

会话是临时内存,在定义的时间后过期,我相信默认是20分钟不活动.

这也可能是因为您正在使用具有负载平衡的多个服务器.除非会话持久存储在数据库中,否则当您从一个服务器移动到另一个服务器时,会话将丢失.

出于上述原因,我建议避免这种方法.有更好,更安全的方法来处理身份验证.

PS一个名为DataEntityLayer的对象不应该派生自System.Web.UI.Page !!