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

C# C会话变量/应用程序范围变量,c#,session-variables,C#,Session Variables,我刚从ColdFusion开始接触C,我正在尝试复制我在CF中开发的应用程序,以帮助我理解该语言 我的应用程序让用户登录并搜索和购买虚拟物品 在我的CF应用程序中,当用户登录时,我设置了一个名为loggedIn的会话变量,该变量为true 每次搜索/购买请求只能在此会话变量为true时发出。如果请求从主机返回过期的会话响应,则我更新session.loggedIn=false。然后发出新的登录请求 我如何在C中实现这一点,从而不需要将它传递给与之交互的每个类/方法并从中返回它 基本上,在CF中,

我刚从ColdFusion开始接触C,我正在尝试复制我在CF中开发的应用程序,以帮助我理解该语言

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

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

每次搜索/购买请求只能在此会话变量为true时发出。如果请求从主机返回过期的会话响应,则我更新session.loggedIn=false。然后发出新的登录请求

我如何在C中实现这一点,从而不需要将它传递给与之交互的每个类/方法并从中返回它


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

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


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

如果您只想设置会话值,则可以使用session属性,该属性可用于WebForm或Controller。不清楚您是否使用WebForms或MVC

无论哪种方式,使用该程序对两种情况都是一样的,例如

书写

会话[loggedIn]=真

阅读

bool isLoggedIn=Convert.ToBooleanSession[loggedIn]

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

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

        return false;
    }
    set
    {
        Session["loggedIn"] = value;
    }
}

这个问题是针对ASP.NET WebForms还是ASP.NET MVC的?我建议您不要尝试将代码从ColdFusion复制到C。模式会有所不同,这可能不是使用不同语言的最佳方法。我建议您看看Identity 2框架,这将满足您的需要,它是一个用于身份验证和用户身份验证的框架。