在类中创建会话

时间:2015-04-08 17:50:40

标签: c# asp.net

是否可以在班级中创建会话?

我在我的身份验证类中尝试此操作:

HttpContext.Current.Session["user"]["name"] = "firstname";

但是我收到了这个错误:

  

错误342无法将带有[]的索引应用于类型的表达式   '对象'

有谁知道为什么?

2 个答案:

答案 0 :(得分:3)

会话密钥/值未存储在jagged arrays中。它们像单维数组一样被访问:

HttpContext.Current.Session["username"] = "firstname";

请记住,会话是按服务器端的每个用户存储的,因此最终可能会很昂贵。明智地使用它们。

还要考虑,在Page类中提取会话值,然后将其传递给class。有一些相关的讨论here

答案 1 :(得分:1)

可以将类添加到会话中。例如,您可以创建一个类:

public class User 
{
    public string FirstName { get; set ;}
    public string LastName{ get; set; }
}

然后将其存储在会话中:

User user = new User() { FirstName = "Jon", LastName = "Doe" };
HttpContext.Current.Session["user"] = user;

然后从会话中获取用户:

User user = HttpContext.Current.Session["user"] as User;
string firstName = user.FirstName; // "Jon"
string lastName = user.LastName; // "Doe