保存在处理程序中的会话无法在aspx文件中访问

本文关键字:aspx 访问 文件 会话 存在 处理 程序 保存 | 更新日期: 2023-09-27 18:11:48

我在我的web应用程序ie的第一页上实现验证码。在登录页面。captcha值在登录时需要访问的通用处理程序中设置。Aspx页面进行验证。

验证码工作得很好,直到我添加了一个代码来重置会话ID每次用户来到登录页面。我在login.aspx的页面加载中有这个:

private void Page_Load(object sender, System.EventArgs e)
{
  if(!IsPostBack)
  {
     Session.Abandon();
     Response.Cookies.Add(new HttpCookie("ASP.NET_SessionId", ""));
  }
}

我尝试用这个代码也得到新的sessionId:

private void Page_Load(object sender, System.EventArgs e)
{
  if(!IsPostBack)
  {
      SessionIDManager manager = new SessionIDManager();
      string newID = manager.CreateSessionID(Context);
      bool redirected = false;
      bool isAdded = false;
      manager.SaveSessionID(Context, newID, out redirected, out isAdded);
  }
}

当我重置sessionId时,我无法获取login.aspx中保存在处理程序中的会话参数。不知道为什么,因为我在页面加载中重置会话,然后控制到设置会话参数的处理程序,然后在登录时单击我想验证在输入值的处理程序中设置的会话参数。但不知何故,我无法访问会话参数。我得到错误"对象引用未设置为对象的实例"。

我需要重置我的SessionId,因为审计公司要求我这样做。关于我如何实现这两件事的任何建议:重置SessionID和使用验证码?

保存在处理程序中的会话无法在aspx文件中访问

确保会话重置代码仅在您第一次加载页面时调用,而不是在单击登录按钮时回发时调用。Page_Load应该看起来像这样:

private void Page_Load(object sender, System.EventArgs e)
{
  if(!IsPostBack)
  {
    Session.Abandon();
    Response.Cookies.Add(new HttpCookie("ASP.NET_SessionId", ""));
  }
}