0

刚接触 C# .NET,请多多包涵。

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

出于某种原因,在 my 中包含[AllowAnonymous]适当的操作 ( Index())HomeController 不起作用,而对不同控制器中的操作执行相同操作对来宾用户确实有效(例如登录页面显示)。

删除 [Authorize] 和/或 [AllowAnonymous] 不起作用。我也尝试Application_BeginRequest()在 Global.asax 中使用但没有成功(甚至不确定我是否正确使用)。有人可以帮我理解为什么主页会被阻止吗?没有其他页面有访问问题。

HomeController.cs:

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

网络配置:

<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>

全球.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");
    }
}
4

1 回答 1

0

误报 - 原来我不久前修改了 ControllerFactory 的默认行为,这导致我的 HomeController 操作永远不会被执行。现在一切都好。

于 2013-06-28T21:36:35.303 回答