如何从全局asax中的代码访问值

时间:2012-07-18 07:29:31

标签: asp.net global-asax

在我的页面中,我在每个按钮上重新生成会话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帮助......提前感谢..............

2 个答案:

答案 0 :(得分:0)

HttpContext.Current.Session["uname"]=here;

答案 1 :(得分:0)

首先不要在Global.asax中编写业务逻辑。 我想指出3个基本的东西:

  1. 当session_start()调用
  2. 如何维护会话
  3. 您应该在哪里设置会话变量。
  4. 对于以下细节,我假设你有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()处检索/更新值。