Asp.net

SimpleMembershipProvider 不工作

  • September 3, 2012

我用 VS2012 開始了一個新的網際網路項目,並試圖稍微重組我的項目,但我似乎無法讓 SimpleMemberhsipProvider 正常工作。基本上,我所做的只是將模型對象與其他幾個項目一起移動到核心項目中。我已經實現了 Ninject 並試圖通過使用儲存庫模式來抽象 Entity 來獲取我的數據。我真的不覺得我對目前項目有太大的改變,但由於某種原因,當我現在啟動應用程序時,我得到:

{“角色管理器功能尚未啟用。”}

框架提供的 ActionFilter 是在以下情況下引發錯誤的地方:

WebSecurity.InitializeDatabaseConnection(“DefaultConnection”, “UserProfile”, “Id”, “UserName”, autoCreateTables: true);

叫做。

這是一些堆棧跟踪:

[ProviderException:角色管理器功能尚未啟用。]

System.Web.Security.Roles.EnsureEnabled() +9561885

System.Web.Security.Roles.get_Provider() +8

WebMatrix.WebData.WebSecurity.InitializeProviders(DatabaseConnectionInfo connect,字元串 userTableName,字元串 userIdColumn,字元串 userNameColumn,布爾 autoCreateTables)+104

WebMatrix.WebData.WebSecurity.InitializeDatabaseConnection(字元串 connectionStringName,字元串 userTableName,字元串 userIdColumn,字元串 userNameColumn,布爾 autoCreateTables)+100

InoutBoard.Core.Infrastructure.Filters.SimpleMembershipInitializer.. c:\Users\Kyle\Documents\Visual Studio 2012\Projects\InoutBoard\InoutBoard.Core\Infrastructure\Filters\InitializeSimpleMembershipAttribute.cs:42 中的 ctor()

[InvalidOperationException:無法初始化 ASP.NET 簡單成員資格數據庫。有關詳細資訊,請參閱 <http://go.microsoft.com/fwlink/?LinkId=256588]>

c:\Users\Kyle\Documents\Visual Studio 2012 中的 InoutBoard.Core.Infrastructure.Filters.SimpleMembershipInitializer..ctor() \Projects\InoutBoard\InoutBoard.Core\Infrastructure\Filters\InitializeSimpleMembershipAttribute.cs:46

我在以下連結https://github.com/keroger2k/InoutBoard在 github 上託管程式碼

第一種方式

檢查sphair 的答案(在目前執行緒中)。

第二種方式

將以下程序集添加到web.config

&lt;system.web&gt;
 &lt;compilation debug="true" targetFramework="4.5"&gt;
   &lt;assemblies&gt;
     &lt;add assembly="WebMatrix.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/&gt;
     &lt;add assembly="WebMatrix.WebData, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/&gt;
   &lt;/assemblies&gt;
 &lt;/compilation&gt;
&lt;/system.web&gt;

更新

WebMatrix.WebData程序集包含一個啟動方法來初始化成員資格/角色提供程序並啟用 RoleManager ( PreApplicationStartCode.Start)。但是 ASP.NET 找不到在你的情況下執行。通過添加這兩行程式碼,我們強制 ASP.NET 在這些程序集中搜尋PreApplicationStartMethodAttribute(s).

引用自:https://stackoverflow.com/questions/12254701