【发布时间】:2013-01-22 23:05:44
【问题描述】:
我正在编写一个 ASP.NET C# 网站,该网站需要访问数据库中的数据并将其显示给用户以供查看和编辑。它访问的特定数据基于登录的用户,我需要多个用户能够同时使用该站点,同时查看和编辑不同的数据。我偶然发现了会话状态的概念,经过大量阅读并没有太多理解。我遇到了一个问题。
在我的默认页面中,我这样做是为了创建一个 Session 变量:
Session.Add("UserData",userdata);
我也试过这个:
Session["UserData"] = userdata;
然后在稍后的页面中,我这样做是为了尝试调用它:
object myobject = Session["UserData"];
这给了我一个错误,说Session["UserData"] 未设置为对象的实例。这似乎是每个人都在使用的方法,是我遗漏了什么吗?
我的站点在 IIS 上配置为将会话状态模式设置为“进行中”,但大多数人似乎是使用他们的 web.config 文件手动设置的。但是,当我尝试在我的 web.config 文件中执行此操作时,总是会看到“无法识别的配置部分”。我的编译器不知道这是什么:
<sessionstate mode="inproc"/>
编辑,更详细的代码:
MyClass userdata = new MyClass();
userdata.name = "myname";
userdata.number = 5;
Session["UserData"] = userdata;
稍后...
MyClass mydata = (MyClass)(Session["UserData"]);
这会返回 Session["UserData"] 为空的错误。
【问题讨论】:
-
在哪里初始化用户数据?调用Add时是否可能为null?
-
你有 Session["UserData"] = userdata; ,您在哪里分配用户数据,您可以粘贴代码以便我们查看。 Session["UserData"] 应该可以工作,或者如果您正确分配它,我应该说它有一个值..
-
"userdata" 在这里是伪代码,在我调用任何代码之前,我 100% 确定这个变量包含数据。
-
它是一个自定义类,会话变量是否仅限于基本类?
-
你没有禁用cookies吗?
标签: c# asp.net session-state