c# - 如何从 ASP.NET 中的任何类访问 session 变量?

标签 c# asp.net session-variables

我在应用程序的 App_Code 文件夹中创建了一个类文件。我有一个 session 变量

Session["loginId"]

我想在我的类中访问这个 session 变量,但是当我写下一行时它给出了错误

Session["loginId"]

谁能告诉我如何访问在 ASP.NET 2.0 (C#) 的 app_code 文件夹中创建的类中的 session 变量

最佳答案

(为完整性而更新)
您可以使用 Session["loginId"] 从任何页面或控件访问 session 变量,并使用 System.Web.HttpContext.Current.Session 从任何类(例如,从类库内部)访问 session 变量["loginId"].

但请继续阅读我的原始答案...


我总是在 ASP.NET session 周围使用包装类来简化对 session 变量的访问:

public class MySession
{
    // private constructor
    private MySession()
    {
      Property1 = "default value";
    }

    // Gets the current session.
    public static MySession Current
    {
      get
      {
        MySession session =
          (MySession)HttpContext.Current.Session["__MySession__"];
        if (session == null)
        {
          session = new MySession();
          HttpContext.Current.Session["__MySession__"] = session;
        }
        return session;
      }
    }

    // **** add your session properties here, e.g like this:
    public string Property1 { get; set; }
    public DateTime MyDate { get; set; }
    public int LoginId { get; set; }
}

此类在 ASP.NET session 中存储其自身的一个实例,并允许您从任何类以类型安全的方式访问您的 session 属性,例如:

int loginId = MySession.Current.LoginId;

string property1 = MySession.Current.Property1;
MySession.Current.Property1 = newValue;

DateTime myDate = MySession.Current.MyDate;
MySession.Current.MyDate = DateTime.Now;

这种方法有几个优点:

  • 它使您免于大量类型转换
  • 您不必在整个应用程序中使用硬编码 session key (例如 Session["loginId"]
  • 您可以通过在 MySession 的属性上添加 XML 文档注释来记录您的 session 项目
  • 您可以使用默认值初始化您的 session 变量(例如,确保它们不为空)

关于c# - 如何从 ASP.NET 中的任何类访问 session 变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/621549/

相关文章:

javascript - 如何在 html5/jquery 世界中实现母版页/模板

javascript - 服务器端的 onclick 事件 html 按钮

c# - 在 asp.net 网站中为多个 session 用户交换内容

php - 如何从 SESSID 获取 $_SESSION 数据?

c# - 在偏移处绘制图形

c# - 如何从 C# 中的类对象数组访问属性?

c# - ASP.NET 缓存之间的区别

c# - 使用 C# 代码隐藏将表动态添加到 ASP.NET Web 应用程序

asp.net - MVC 3 中的 Windows 身份验证

ruby-on-rails - 如何在 Ruby on Rails 3.2.8 中将数据保存到 LocalStorage?