2013-11-04 33 views
3

調用時,我有一個使用SimpleMembership來驗證用戶的MVC4應用程序。WebSecurity.InitializeDatabaseConnection失敗,並且「角色管理器功能尚未啓用」。當從控制檯程序

我想從控制檯程序添加用戶。

控制檯程序引用具有將執行用戶創建的方法的類庫。

它看起來像這樣:

public class UserBuilder 
{ 
    private static readonly SimpleMembershipInitializer _membershipInitializer; 
    private static readonly bool _isInitialized; 
    private static readonly object _initializerLock = new object(); 

    static UserBuilder() 
    { 
     LazyInitializer.EnsureInitialized(ref _membershipInitializer, ref _isInitialized, ref _initializerLock); 
    } 

    public void HandleEvent(UserAdded @event) 
    { 
     if (!WebSecurity.UserExists("ReportModels")) 
     { 
      WebSecurity.CreateUserAndAccount("ReportModels", "ReportModels"); 
     }; 
    } 

    private class SimpleMembershipInitializer 
    { 
     public SimpleMembershipInitializer() 
     { 
      WebSecurity.InitializeDatabaseConnection("DefaultConnection", "UserProfile", "UserId", "UserName", autoCreateTables: true); 
     } 
    } 
} 

當我開始我的控制檯應用程序我在開始WebSecurity.InitializeDatabaseConnection行獲得System.Configuration.Provider.ProviderException {"The Role Manager feature has not been enabled."}

我需要做些什麼才能做到這一點?

我已經試過:

  • 添加NuGet包微軟ASP.NET網頁2 Web數據到控制檯項目和類庫項目。
  • 本帖子中列出的答案爲:SimpleMembershipProvider not working
  • 驗證了連接字符串。
  • 驗證了這些表在數據庫中。
  • 驗證了創建用戶並從MVC4項目驗證它們的工作。

回答

3

最後,它解決了由於在這篇博客中找到的信息:http://insomniacgeek.com/to-call-this-method-the-membership-provider-property-must-be-an-instance-of-extendedmembershipprovider/和一些谷歌上搜索。

在本質上,我需要把它添加到我的app.config文件:

<system.web> 
<profile defaultProvider="SimpleProfileProvider"> 
    <providers> 
    <add name="SimpleProfileProvider" type="WebMatrix.WebData.SimpleMembershipProvider, WebMatrix.WebData" 
     connectionStringName="DefaultConnection" applicationName="/" /> 
    </providers> 
</profile> 
<membership defaultProvider="SimpleMembershipProvider"> 
    <providers> 
    <add name="SimpleMembershipProvider" type="WebMatrix.WebData.SimpleMembershipProvider, WebMatrix.WebData" /> 
    </providers> 
</membership> 
<roleManager defaultProvider="SimpleRoleProvider" enabled="true"> 
    <providers> 
    <add name="SimpleRoleProvider" type="WebMatrix.WebData.SimpleRoleProvider, WebMatrix.WebData"/> 
    </providers> 
</roleManager> 
</system.web> 

請注意roleManager元素的enabled="true"。沒有這個將拋出同樣的異常。

相關問題