Asp.net mvc 4 在MVC4中初始化简单成员身份

Asp.net mvc 4 在MVC4中初始化简单成员身份,asp.net-mvc-4,authorization,simplemembership,Asp.net Mvc 4,Authorization,Simplemembership,我的MVC4应用程序有一个问题,它以前工作得很好,但由于某种原因停止了,我不知道为什么。我使用简单的memebrship提供程序和代码优先的方法。这是我在主控制器中的索引操作方法 [Authorize] public class HomeController : Controller { private IActivityRepository repo; public HomeController(IActivityRepository activityRepository)

我的MVC4应用程序有一个问题,它以前工作得很好,但由于某种原因停止了,我不知道为什么。我使用简单的memebrship提供程序和代码优先的方法。这是我在主控制器中的索引操作方法

[Authorize]
public class HomeController : Controller
{
    private IActivityRepository repo;

    public HomeController(IActivityRepository activityRepository)
    {
        repo = activityRepository;
    }

    //Allow anonymous to allow to create database if there isn't one yet
    [AllowAnonymous]
    public ActionResult Index()
    {
        repo.InitializeDatabase();       //!!!!!!!!!!!!!!!!!!!!!

        return RedirectToAction("ManageActivities");
    }
我的整个概念是,如果数据库不存在,它将在InitializeDatabase方法中创建。然后用户被重定向到ManageActivities操作方法,该方法用[Authorize]属性修饰,实际上用户需要登录AccountCotroller中的操作方法(MVC4中的开箱即用)。此控制器由[InitializeSimpleMembership]修饰,触发InitializeSimpleMembershipAttribute筛选器

这一逻辑在不久前对我很有效。今天我想创建一个新的数据库用于测试。创建数据上下文时,我使用数据库的自定义名称调用基类,如下所示:

public class ActivityLogContext : DbContext
{
    public ActivityLogContext() : base("ActivitiesConnection")
    {

    }
因此,我更改了连接字符串的详细信息并运行了应用程序。不幸的是,出于某种原因,代码在从主控制器运行Index方法之前(即使它用[AllowAnonymous]修饰)会命中InitializeSimpleMembership筛选器。实际上,简单成员身份已初始化,但数据库尚不存在,这使我出错


我的问题是,如果索引方法不需要授权,为什么要在应用程序启动时发布InitializeSimpleMembership筛选器?

我将取消使用InitializeSimpleMembership作为。将初始化移到Global.asax Application\u Start方法,并在那里进行初始化,以便按正确的顺序进行初始化。

有时您需要有人睁开眼睛,跳出框框进行思考。谢谢