无法以访客用户身份查看主页(即使使用AllowAnonymous)

本文关键字:AllowAnonymous 主页 访客 用户 身份 | 更新日期: 2023-09-27 18:19:57

C#.NET新手,请耐心等待。

我正在构建一个简单的C#web应用程序(MVC 4)。我的身份验证/授权有效-普通用户可以登录/注销/查看数据,只有管理员可以编辑数据库等。但是,访客用户无法查看主页。相反,guest被重定向到登录页面-这是我在web.config中指定的。(在我实现之前,用户只会转到错误页面。)只有当用户登录时,他们才能真正看到主页。

出于某种原因,在我的HomeController中的适当操作(Index())上包含[AllowAnonymous]是不起作用的,而在不同的控制器中对操作执行同样的操作对访客用户有效(例如,登录页面显示)。

删除[授权]和/或[允许匿名]无效。我也尝试在Global.asax中使用Application_BeginRequest(),但没有成功(甚至不确定我是否正确使用了它)。有人能帮我理解为什么主页会被屏蔽吗?没有其他页面存在访问问题。

HomeController.cs:

...
namespace Portal.UI.Controllers
{
    [Authorize]
    public class HomeController : Controller
    {
        [AllowAnonymous]
        public ActionResult Index()
        {
            return View();
        }
        ...
    }
}

web.config:

<system.web>
    <authentication mode="Forms">
      <!-- Login action is in another controller, AdminController -->
      <forms name="REDIRECT_TO_LOGIN" loginUrl="~/Admin/Login"
        protection="All" path="/" timeout="30">
      </forms>
    </authentication>
</system.web>

Global.asax.cs:

public class MvcApplication : System.Web.HttpApplication
{
    protected void Application_Start()
    {
        // ...
        AreaRegistration.RegisterAllAreas();
        WebApiConfig.Register(GlobalConfiguration.Configuration);
        FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
        RouteConfig.RegisterRoutes(RouteTable.Routes);
    }
    protected void Application_BeginRequest()
    {
        if (Request.AppRelativeCurrentExecutionFilePath == "~/")
            HttpContext.Current.RewritePath("/Home/Index");
    }
}

无法以访客用户身份查看主页(即使使用AllowAnonymous)

错误警报-事实证明,我不久前修改了ControllerFactory的默认行为,导致我的HomeController操作永远无法执行。现在一切都好了。