Session.Abandon 不会自动重定向到 asp.net 中的 loginurl
Posted
技术标签:
【中文标题】Session.Abandon 不会自动重定向到 asp.net 中的 loginurl【英文标题】:Session.Abandon does not automatically redirect to loginurl in asp.net 【发布时间】:2013-04-29 06:17:45 【问题描述】:这似乎是一个非常微不足道的问题,但我仍然无法让它运行。我正在构建一个 asp.net Web 应用程序,我在这里使用表单身份验证。我遵循了以下步骤。
1) 在 web.config 中这是条目
2) 在 default.aspx 中,我使用了自定义身份验证,身份验证通过后,我将重定向到 web.config 中提到的 defaultUrl。以下是代码。这工作正常。
会话[“测试”] =“测试”; FormsAuthentication.RedirectFromLoginPage(Login1.UserName, true);Login1是asp.net的登录控件。
3) 在 StockTips.aspx(默认 URL)中,在注销链接按钮单击事件中,我试图放弃会话,以便它自动重定向到 loginurl(默认 URL)。这没有发生。它停留在同一页面上,即 StockTips.aspx。以下是代码。
protected void lnkLogout_Click(对象发送者,EventArgs e) 字符串 str = Session["test"].ToString(); 会话.Abandon(); //Session.RemoveAll(); //Session.Clear(); //FormsAuthentication.SignOut(); 字符串 str1 = Session["test"].ToString();Session["test"] 中的值也保留。我已经尝试了上面的注释代码。我不想将 Response.Redirect 显式写入 loginurl,因为我很确定一旦会话被放弃,它会自动重定向到 loginurl。但不知何故,它不起作用。
我不确定以下信息是否会有所帮助,但仍想添加它。我有一个母版页,其中 default.aspx 和 stocktips.aspx 都打开。 LinkButton 在 stocktips.aspx 内部而不是在母版页上。
如果您需要我方面的任何进一步信息,请告诉我。
请帮忙!
提前致谢。
问候,
萨马尔
【问题讨论】:
【参考方案1】:我认为您在会议上做得很好。但是在您的 web.config 文件中查看您已启用 cookie 以进行表单身份验证。即使您删除了会话,带有身份验证详细信息的 cookie 仍保留在浏览器中(cookie 的超时时间=30 分钟)。因此,身份验证详细信息会保留在 cookie 中,直到超时或关闭浏览器。尝试删除 cookie 而不是删除会话。
【讨论】:
嗨 Prashant 我仍然无法让它工作。我尝试了以下。 Response.Cookies.Remove("ASP.NET_SessionId"); Response.Cookies["ASP.NET_SessionId"].Value = string.Empty; Response.Cookies.Add(new HttpCookie("ASP.NET_SessionId", ""));仍然无法让 asp.net 重定向到 default.aspx以上是关于Session.Abandon 不会自动重定向到 asp.net 中的 loginurl的主要内容,如果未能解决你的问题,请参考以下文章
在 ASP.NET 中的 Session.Clear() 和 Session.Abandon() 之后会话变量未清除