C# 无法在aspx文件中访问处理程序中保存的会话
我在我的web应用程序的第一页(即登录页)上实现验证码。验证码值在通用处理程序中设置,需要在login.aspx页面中访问该处理程序以进行验证 验证码工作得非常好,直到我添加了一个代码,每次用户进入登录页面时重置会话ID。即使在login.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();
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的重新生成会终止我的会话。是否有办法达到审计的预设定?