Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/279.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.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
C# 无法在aspx文件中访问处理程序中保存的会话_C#_Asp.net_Session_Captcha_Generic Handler - Fatal编程技术网

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

C# 无法在aspx文件中访问处理程序中保存的会话,c#,asp.net,session,captcha,generic-handler,C#,Asp.net,Session,Captcha,Generic Handler,我在我的web应用程序的第一页(即登录页)上实现验证码。验证码值在通用处理程序中设置,需要在login.aspx页面中访问该处理程序以进行验证 验证码工作得非常好,直到我添加了一个代码,每次用户进入登录页面时重置会话ID。即使在login.aspx的页面加载中,我也有以下内容: private void Page_Load(object sender, System.EventArgs e) { if(!IsPostBack) { Session.Abandon();

我在我的web应用程序的第一页(即登录页)上实现验证码。验证码值在通用处理程序中设置,需要在login.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和使用Captcha?

确保会话重置代码仅在首次加载页面时调用,而不是在单击登录按钮时在回发中调用。页面加载应如下所示:

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

是的,我已经处理好了,但会议仍在进行中。我的情况也一样。在登录阶段,我需要保留一些元素,通常是用户登录的元素,但是sessionId的重新生成会终止我的会话。是否有办法达到审计的预设定?