2013-06-27 39 views
1

我有一個MVC4應用程序,模型和遷移在一個單獨的項目中,這是一個類庫。「角色管理器功能尚未啓用」,configuration.cs在一個單獨的項目中

我試圖用種子用下面的代碼我種方法中

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> 

我在哪裏運行update-database,我得到了The Role Manager feature has not been enabled.錯誤。 我錯過了什麼?

回答

3

問題是我的「Data」項目不是StartUp項目。 App.config未被讀取,並且導致錯誤。

1

MVC4從WebMatrix重建(或更多借用你可以說)身份驗證系統,因此請確保你沒有混合來自先前身份驗證系統的任何代碼。但是,如果您在那裏使用默認的安全和身份驗證(現在是SimpleMembership),並且您嘗試爲角色播種,則需要在web.config中啓用SimpleRoleProvider。您是否試圖在種子方法中爲具有相應角色的用戶或用戶創建實體遷移?如果你沒有使用角色播種數據庫,那麼它可能是別的。通過刪除migrations/congiguration.cs文件中任何提到的種子角色來測試這一點。因此,請確保提及的SimpleRoleProvider不在configuration.cs文件中,或者嘗試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的一部分,這個角色提供商必須顯式配置爲遷移種方法的一部分。否則,遷移中的種子方法將不會提取它。

+0

我不會將用戶添加到任何角色,只需調用'WebSecurity.CreateUserAndAccount'。我試着將你的代碼添加到我的app.config中,但那也不起作用。它沒有被拾起,因爲我的種子方法在類庫中? – PBG

相關問題