Asp.net mvc 4 &引用;角色管理器功能尚未启用";,configuration.cs位于单独的项目中

Asp.net mvc 4 &引用;角色管理器功能尚未启用";,configuration.cs位于单独的项目中,asp.net-mvc-4,roleprovider,Asp.net Mvc 4,Roleprovider,我有一个MVC4应用程序,模型和迁移在一个单独的项目中,这是一个类库 我正在尝试使用我的seed方法中的以下代码与老用户一起对数据库进行种子设定 foreach (var subcontractor in context.Subcontractors) { WebSecurity.CreateUserAndAccount(subcontractor.Email, subcontractor.ObsoletePlainTextPassword); } 我将以下代码从我的主项目复制到app

我有一个MVC4应用程序,模型和迁移在一个单独的项目中,这是一个类库

我正在尝试使用我的seed方法中的以下代码与老用户一起对数据库进行种子设定

foreach (var subcontractor in context.Subcontractors)
{
    WebSecurity.CreateUserAndAccount(subcontractor.Email, subcontractor.ObsoletePlainTextPassword);
}
我将以下代码从我的主项目复制到app.config中,但我认为它没有被接受

<profile defaultProvider="DefaultProfileProvider">
  <providers>
    <add name="DefaultProfileProvider" type="System.Web.Providers.DefaultProfileProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" applicationName="/" />
  </providers>
</profile>
<membership defaultProvider="DefaultMembershipProvider">
  <providers>
    <add name="DefaultMembershipProvider" type="System.Web.Providers.DefaultMembershipProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/" />
  </providers>
</membership>
<roleManager defaultProvider="DefaultRoleProvider">
  <providers>
    <add name="DefaultRoleProvider" type="System.Web.Providers.DefaultRoleProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" applicationName="/" />
  </providers>
</roleManager>

当我运行更新数据库时,我得到
角色管理器功能尚未启用。
错误。 我遗漏了什么?

MVC4从WebMatrix重建了(或者可以说是借用了更多)身份验证系统,因此请确保您没有混合先前身份验证系统中的任何代码。但是,如果您在其中使用默认的安全性和身份验证(现在是SimpleMembership),并且尝试为角色设定种子,则需要在web.config中启用SimpleRoleProvider。您是否尝试在实体迁移的种子方法中为一个或多个具有相应角色的用户设定种子?如果您没有在数据库中植入角色,那么它可能是其他东西。通过删除migrations/congiguration.cs文件中提到的种子角色来测试这一点。因此,请确保configuration.cs文件中没有提到SimpleRoleProvider,或者在web.config中尝试以下代码

<roleManager enabled="true" defaultProvider="SimpleRoleProvider">
  <providers>
    <clear/>
    <add name="SimpleRoleProvider" type="WebMatrix.WebData.SimpleRoleProvider, WebMatrix.WebData"/>
  </providers>
</roleManager>
<membership defaultProvider="SimpleMembershipProvider">
  <providers>
    <clear/>
    <add name="SimpleMembershipProvider" 
         type="WebMatrix.WebData.SimpleMembershipProvider, WebMatrix.WebData"/>
  </providers>
</membership>

原因是,当网站运行时,SimpleRoleProviders作为MVC的一部分可用,但必须将此角色提供程序显式配置为迁移的种子方法的一部分。否则,迁移中的seed方法将无法获取它。

MVC4从WebMatrix重建(或者可以说是借用了更多)身份验证系统,因此请确保您没有混合来自先前身份验证系统的任何代码。但是,如果您在其中使用默认的安全性和身份验证(现在是SimpleMembership),并且尝试为角色设定种子,则需要在web.config中启用SimpleRoleProvider。您是否尝试在实体迁移的种子方法中为一个或多个具有相应角色的用户设定种子?如果您没有在数据库中植入角色,那么它可能是其他东西。通过删除migrations/congiguration.cs文件中提到的种子角色来测试这一点。因此,请确保configuration.cs文件中没有提到SimpleRoleProvider,或者在web.config中尝试以下代码

<roleManager enabled="true" defaultProvider="SimpleRoleProvider">
  <providers>
    <clear/>
    <add name="SimpleRoleProvider" type="WebMatrix.WebData.SimpleRoleProvider, WebMatrix.WebData"/>
  </providers>
</roleManager>
<membership defaultProvider="SimpleMembershipProvider">
  <providers>
    <clear/>
    <add name="SimpleMembershipProvider" 
         type="WebMatrix.WebData.SimpleMembershipProvider, WebMatrix.WebData"/>
  </providers>
</membership>


原因是,当网站运行时,SimpleRoleProviders作为MVC的一部分可用,但必须将此角色提供程序显式配置为迁移的种子方法的一部分。否则,迁移中的seed方法将无法获取它。

问题在于我的“数据”项目不是启动项目。未读取App.config,这是导致错误的原因

问题在于我的“数据”项目不是一个启动项目。未读取App.config,这是导致错误的原因

我没有向任何角色添加用户,只是调用
WebSecurity.CreateUserAndAccount
。我尝试将您的代码添加到我的app.config,但也没有成功。是否因为我的种子方法在类库中而没有被拾取?我没有向任何角色添加用户,只是调用
WebSecurity.CreateUserAndAccount
。我尝试将您的代码添加到我的app.config,但也没有成功。是否因为我的种子方法在类库中而没有被拾取?