在我的页面中,我在每个按钮上重新生成会话ID,点击进入下一页。我已经在登录时在会话变量(session [“uname”] = txtusername.text)中保存了用户名。但是当我重新生成新的会话ID时,session [“uname”]具有空引用,因为新会话ID。这就是我想在会话启动功能中使用 Global.asax 设置会话变量值的原因。
void Session_Start(object sender, EventArgs e)
{
session["uname"]=here;
}
但是在Global.asax页面中,我无法访问登录页面中的任何值。。 主要问题是从后面的代码访问global.asax中的任何值。 我怎么能解决这个问题...... Plz帮助......提前感谢..............
答案 0 :(得分:0)
HttpContext.Current.Session["uname"]=here;
答案 1 :(得分:0)
首先不要在Global.asax中编写业务逻辑。 我想指出3个基本的东西:
对于以下细节,我假设你有login.aspx,login.aspx.cs:
如您所知HTTP是无状态协议,因此每个请求都是新请求。 因此,对于每个请求,session_start()都将被执行。
当用户第一次请求资源时,将生成唯一会话,并将包含会话ID的cookie发送给客户端。
对于来自用户的任何进一步请求,HTTP客户端将cookie传递给服务器,因此服务器可以跟踪用户。这就是会话的工作方式。
<小时/> 现在让我们来看看您在Gloabl.asax的session_start()中设置Session [“uname”]的代码,请记住在页面生命周期开始之前调用Globlax.asax 所以它无法访问页面数据。
Instade你应该在login.aspx.cs文件中设置Session [“uname”]。在此检查用户凭据是否正确,然后:
set Session [“uname”] = value。
现在,对于该用户的每个其他请求,会话[“uname”]将可用。您还可以在Global.asax的session_start()处检索/更新值。