Session在.Net中丢失数据的问题

时间:2017-02-28 16:40:34

标签: c# asp.net session

我之前已经问过这个问题了,但现在我发现了更多细节和一些更奇怪的事情。

我有一个Web项目,它有2个.aspx文件,可以将数据与会话连接起来。没有任何额外的代码,这是有效的,当我添加我的额外代码时,会话不再有效。有人知道为什么吗?

会话工作的代码:

Form1中:

protected void Page_Load(object sender, EventArgs e)
{
    Session["data"] = "5";
}
protected void ButtonOk_Click(object sender, EventArgs e)
{
    string s = (string)(Session["data"]); // 5 when i look while debugging
    Response.Redirect("~/Form2.aspx", false);
}

表格2:

protected void Page_Load(object sender, EventArgs e)
{
    string s = (string)(Session["data"]); // s = 5 when i look while debugging
}
protected void ButtonOk_Click(object sender, EventArgs e)
{
    string s = (string)(Session["data"]); // s = 5 when i look while debugging
}

会话不起作用的代码:(我使用2个类库(逻辑和数据访问,我从json webservice获取数据并将其解析为我的表单)。 Form1中:

protected void Page_Load(object sender, EventArgs e)
{
    Logic logic = new Logic();
    logic.login(credentials);
    List<AppointmentExtParticipant> opleidingVolgers = logic.getOpleidingVolgers();
    foreach (AppointmentExtParticipant app in opleidingVolgers)
    {
        if (app.contact != null)
        {
            Relation rel = logic.getRelationData(app.contact.FK_RELATION);
            DropDownListUsers.Items.Add(app.ToString() + " " + rel.ToString());
        }
    }
    Session["data"] = "5";
}

protected void ButtonOk_Click(object sender, EventArgs e)
{
    string s = (string)(Session["opleidingvolger"]); // s = 5 when i look while debugging
    Response.Redirect("~/Form2.aspx", false);
}

表格2:

protected void Page_Load(object sender, EventArgs e)
{
    string s = (string)(Session["data"]); // s = null when i look while debugging
}
protected void ButtonOk_Click(object sender, EventArgs e)
{
    string s = (string)(Session["data"]); // s = null when i look while debugging
}    

当然,我简化了这里的名字,所以人们可以理解,thnx!

编辑:

逻辑登录: enter image description here dataaccess登录: enter image description here

在这里,我从另一个网址上托管的网络服务获取数据。

1 个答案:

答案 0 :(得分:1)

会话通常使用cookies。您正在使用session创建新的CookieContainer因此您需要在请求之间保留会话cookie。这就是为什么我们使用 CookieContainer container = new CookieContainer(); HttpWebRequest req = WebRequest.Create( "") as HttpWebRequest; req.CookieContainer = container; 所以添加

mysqlclient