我一直在开发的应用程序(ASP.Net 4 / C#)使用 FormsAuthentication.RedirectToLoginPage() 在用户单击注销按钮后将其发送回登录页面。
我发现当应用程序部署在 IIS 站点的根目录时,重定向不起作用。单击注销按钮只会重新加载页面。
当应用程序部署到站点内的应用程序虚拟文件夹时,重定向工作属性。
我也尝试过使用 Respond.Redirect(),它也不起作用。我尝试从头开始重新创建该站点(不走运)。
更新:我已经能够在另一台机器上验证这种行为,所以我很有信心它不仅仅是一个网络服务器。
注销按钮的代码:
protected void lbLogout_Click(object sender, EventArgs e)
{
FormsAuthentication.SignOut();
Session.Abandon();
// clear authentication cookie
HttpCookie cookie1 = new HttpCookie(FormsAuthentication.FormsCookieName, "");
cookie1.Expires = DateTime.Now.AddYears(-1);
cookie1.Path = FormsAuthentication.FormsCookiePath;
cookie1.HttpOnly = true;
Response.Cookies.Add(cookie1);
// clear session cookie
HttpCookie cookie2 = new HttpCookie("ASP.NET_SessionId", "");
cookie2.Expires = DateTime.Now.AddYears(-1);
Response.Cookies.Add(cookie2);
FormsAuthentication.RedirectToLoginPage();
//Response.Redirect("~/login.aspx");
Response.End();
}
谢谢您的帮助!