繁体   English   中英

会话没有坚持?

[英]Sessions not persisting?

我的智慧结束了。 我的代码没有跟踪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控件中。

编辑我实际上有一个对象传递给会话但我将其更改为静态字符串用于测试目的,希望这会简化事情。 唉,标签一直显示50.为什么不显示45?

救命?

这不是一个非常广泛的意见,但我总是发现ASP的会话管理规则有点反直觉,所以我倾向于完全避免使用它们。 另外,我不喜欢在整个程序中使用字符串作为标识符,因为它可能导致冲突和其他类型的运行时错误。

坚持使用cookie来保存您自己的数据库中的会话标识符,并将其序列化/反序列化为具有属性和字段的对象。 它的重构更具弹性,如果出现问题,调试起来会容易得多。

您的default.aspx.cs page_load事件在用户控制page_load事件后触发,因此在页面加载后会话值可能为“45”时,标题文本值将显示旧值“50”,因为它已设置在那之前。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM