C#会话变量/应用程序范围的变量

本文关键字:变量 范围 应用程序 会话 | 更新日期: 2023-09-27 18:21:34

我是ColdFusionC#新手,我正在尝试复制我在CF中开发的应用程序,以帮助我理解该语言。

我的应用程序让用户登录并搜索和购买虚拟物品。

在我的CF应用程序中,当用户登录时,我设置了一个名为loggedIn的会话变量,即true

每个search/buy请求只能在该会话变量为true时发出。如果请求从主机返回过期的会话响应,则我更新session.loggedIn = false。然后会发出一个新的登录请求。

我该如何在C#中实现这一点,这样我就不需要将它传递给它交互的每个类/方法并从中返回它了?

基本上,在CF中,我可以从应用程序中的任何地方设置和访问它,但这在C#中可以实现吗?

C#会话变量/应用程序范围的变量

您记录的会话可以是一个在用户登录时实例化的类,一个在过期时失效/销毁的类。

然后,您应该将相关方法移动到该类的中,这样它们就可以始终执行,因为它们只存在于活动会话的范围内。

如果您只是想设置一个会话值,那么您可以使用Session属性,该属性可用于WebForm或Controller(不清楚您使用的是WebForms还是MVC)。

无论哪种方式,使用该程序对两者都是相同的,例如

写入

Session["loggedIn"] = true;

读取

bool isLoggedIn = Convert.ToBoolean(Session["loggedIn"]);

我建议您在WebForm/Controlle上创建一个属性来包装此功能,例如

public bool UserIsLoggedIn
{
    get
    {
        if (Session["loggedIn"] != null)
        {
            return Convert.ToBoolean(Session["loggedIn"]);
        }
        return false;
    }
    set
    {
        Session["loggedIn"] = value;
    }
}