我机智。我的代码无法跟踪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/

10-11 04:20