登录时重定向到另一个页面时的重定向循环

本文关键字:重定向 循环 另一个 登录 | 更新日期: 2023-09-27 18:19:30

我得到了一个重定向循环,我不知道为什么。我使用了这个简单的代码,这样,如果有人转到default.aspx并已经登录,它应该将他们重定向到inside.aspx。为什么我会得到重定向循环?

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (User.Identity.IsAuthenticated) // if the user is already logged in
        {
            Response.Redirect("inside.aspx");
        }
    }
}

编辑:

这两个页面共享一个带有以下代码的主页面,只有当按下注销控制时才会关闭:

public partial class template : System.Web.UI.MasterPage
{
    protected void Page_Load(object sender, EventArgs e)
    {
    }
    protected void LoginStatus1_LoggingOut(object sender, LoginCancelEventArgs e)
    {
        Response.Redirect("default.aspx");
        Session.Abandon();
    }
}

登录时重定向到另一个页面时的重定向循环

我假设您的问题是,当您试图注销时,页面会再次重定向到默认页面。原因是您在重定向会话后正在清除会话,因此不会调用session.Advanced()。但我不知道您的身份验证是否真的依赖于Session.Advant(),在这种情况下,您将再次看到重定向。

protected void LoginStatus1_LoggingOut(object sender, LoginCancelEventArgs e)
        {
            Session.Abandon();
            Response.Redirect("default.aspx");
        }

如果您正在使用成员资格提供程序,请签出defaultUrl,该defaultUrl可以配置为在用户注销后自动重定向。要手动触发注销,请使用FormsAuthentication.SignOut().

问题是两个文件的CodeFile引用相同。这是一个愚蠢的错误,但如果你有这个问题,一定要检查一下!