我机智。我的代码无法跟踪C#中的会话
我正在使用一个用户控件,该控件应获取会话数据,但事实并非如此。
这是用户控件:
[Serializable]
public partial class studentComments : System.Web.UI.UserControl
{
protected void Page_Load(object sender, EventArgs e)
{
string currStud;
if (Session["CS"] == null)
{
currStud = "50";
}
else
{
currStud = (string)Session["CS"];
}
lblHeader.Text = "Comments for Student " + currStud;
//display(currStud);
}
}
这是初始aspx.cs页面中的代码
try
{
student temp = studList.Find(o => o.student_id == studID);
Session["CS"] = "45";
PnlComment.Visible = true;
}
catch (NullReferenceException nre)
{
lblTest.Text = "Student does not exist!";
}
显然,用户控件在PnlComment控件中。
编辑
我实际上是在将一个对象传递给会话,但出于测试目的,我将其更改为静态字符串,希望这样可以简化操作。 the,标签始终显示50。为什么不显示45?
救命?
最佳答案
这不是一个很广泛的观点,但是我一直发现ASP的会话管理规则有点反常,因此我倾向于完全避免使用它们。另外,我只是不喜欢在程序中使用字符串作为标识符,因为它可能导致冲突和其他类型的运行时错误。
坚持使用cookie来保存您自己的会话标识符,该标识符位于数据库中,并使其序列化/反序列化为具有属性和字段的对象。它对重构更具弹性,如果出现问题,则调试起来会容易得多。
关于c# - session 不持续吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13676764/