当用户未登录时,表单身份验证不会让我离开 loginUrl 页面

Forms authentication won't let me leave the loginUrl page when user is not logged

我以前有过使用 iframe 进行表单身份验证的糟糕经历, 所以我使用 ASP.NET 和 C# 创建了一个新网站,使用了两个母版页, 第一个应该在用户未登录时显示,第二个应该在用户登录时显示。

问题是这样的,在我所有的页面上,我在 Pre Init 函数中都有这段代码:

        bool logged = (System.Web.HttpContext.Current.User != null) &&     System.Web.HttpContext.Current.User.Identity.IsAuthenticated;
        if (logged)
        {
            MasterPageFile = "~/MasterL.master";
        }
        else
        {
            MasterPageFile = "~/MasterUL.master";
        }

无论如何,当用户登录时它可以工作,我可以在 'logged' 母版页中看到所有内容页面,但是当用户注销时它不会让我离开 'Default.aspx' 这是在 web.config 中定义为 loginUrl 的内容,或者我定义为 loginUrl 的任何其他内容页面。

未登录母版页中的相同页面与已登录母版页中的相同。

我试过调试,在后面的代码中删除了所有说重定向的代码,但我仍然找不到它为什么会这样。

希望有人能帮我解决这个问题(注意我是母版页的新手,我不确定我是否做错了什么)。

谢谢。

要允许匿名访问,它应该

<authorization> 
    <allow users="?" />
</authorization>

这是针对所有页面,或者另一种配置是逐页设置匿名访问。