Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ASP.NET SqlServer会话状态_Asp.net_Sql Server - Fatal编程技术网

ASP.NET SqlServer会话状态

ASP.NET SqlServer会话状态,asp.net,sql-server,Asp.net,Sql Server,我已将asp.NET web应用程序配置为使用表单身份验证并将会话存储在自定义表中。到目前为止,很好,当我登录时,身份验证在浏览器会话中持续存在。我正试图抓住像这样存储会话的可能性,但我很早就遇到了一个问题 如果我向会话对象添加变量/值对,并将会话变量输出到页面,则变量/值对将按预期显示,但当我关闭并重新打开浏览器时,正确的会话将按预期重新加载(我通过输出sessionid确认),但变量/值对将消失 根据我的理解,会话变量也应该在浏览器会话中可用(字符串是可序列化的,对吗?) List sess

我已将asp.NET web应用程序配置为使用表单身份验证并将会话存储在自定义表中。到目前为止,很好,当我登录时,身份验证在浏览器会话中持续存在。我正试图抓住像这样存储会话的可能性,但我很早就遇到了一个问题

如果我向会话对象添加变量/值对,并将会话变量输出到页面,则变量/值对将按预期显示,但当我关闭并重新打开浏览器时,正确的会话将按预期重新加载(我通过输出sessionid确认),但变量/值对将消失

根据我的理解,会话变量也应该在浏览器会话中可用(字符串是可序列化的,对吗?)

List sessionVars=new List();
受保护的无效页面加载(对象发送方、事件参数e)
{
Session[Session.SessionID]=Session.SessionID;
LoadSessionData();
}
受保护的无效btnSessionVariable\u单击(对象发送方,事件参数e)
{
会话[txtVariableName.Text.Trim()]=txtVariableValue.Text.Trim();
txtVariableName.Text=string.Empty;
txtVariableValue.Text=string.Empty;
LoadSessionData();
}
私有void LoadSessionData()
{
sessionVars.Clear();
foreach(Session.Keys中的字符串键)
{
Add(新SessionVar(key,(string)Session[key]);
}
gridView.DataSource=sessionVars;
gridView.DataBind();
}

浏览器(或浏览器选项卡)关闭并重新启动时,不会保持会话状态。 会话cookie不再适用于新浏览器窗口,因此将启动新会话。ASP.NET再次分配相同的id只是一个巧合

List<SessionVar> sessionVars = new List<SessionVar>();
protected void Page_Load(object sender, EventArgs e)
{
    Session[Session.SessionID] = Session.SessionID;
    LoadSessionData();
}

protected void btnSessionVariable_Click(object sender, EventArgs e)
{
    Session[txtVariableName.Text.Trim()] = txtVariableValue.Text.Trim();
    txtVariableName.Text = string.Empty;
    txtVariableValue.Text = string.Empty;
    LoadSessionData();
}

private void LoadSessionData()
{
    sessionVars.Clear();
    foreach (string key in Session.Keys)
    {
        sessionVars.Add(new SessionVar(key, (string)Session[key]));
    }
    gridView.DataSource = sessionVars;
    gridView.DataBind();
}