Ric*_*996 0 c# mysql asp.net session
我有一个会话变量,我试图从另一个变量(字符串)中给出值。但是,当我这样做时,如下所示,它不存储该值。
DataTable table = new DataTable();
MySqlCommand select = new MySqlCommand("SELECT personID, address_addressID from person WHERE email='" + emailAddress + "' and password = '" + passwordR + "'", connect); //brings back the person ID if user details are correct
using (MySqlDataAdapter adapter = new MySqlDataAdapter(select))
{
adapter.Fill(table);
if (table.Rows.Count != 0)
{
string sessionVar = table.Rows[0]["personID"].ToString();
Session["personID"] = sessionVar;
Run Code Online (Sandbox Code Playgroud)
sessionVar 变量是正确的数据,但不会输入到会话中,这是做错了吗?
编辑:我已经包含了一些更多的上下文来制作这个 MVCE。
问题总结: 分配数据后
使用时,会发现不会存储。您需要在方法上有一个并使用.
说明:
可以在这里找到一个很好的解释。这是主要部分的片段:
Response.Redirect(URL, true);Sessionreturn;Response.Redirect(URL, false);
创建新会话时(即第一次写入 Session 变量时),ASP.NET 会在客户端上设置一个包含会话令牌的易失性 cookie。在所有后续请求中,只要服务器会话和客户端 cookie 未过期,ASP.NET 就可以查看此 cookie 并找到正确的会话。现在,重定向所做的是向客户端发送一个特殊的标头,以便它向服务器请求与它等待的页面不同的页面。服务器端,发送这个头后,Redirect 结束响应。这是一件非常暴力的事情。Response.End 实际上会在页面使用 ThreadAbortException 的任何地方停止它的执行。这里真正发生的是会话令牌在战斗中丢失了。