我正在尝试使用 ASP.NET MVC4 来管理表单身份验证和 OAuth (Facebook),并处理浏览器会话。
然而,我想在 NoSQL 数据存储中管理所有用户的数据(实际上是所有数据)。由于我已经为该商店提供了数据访问层库,我认为我根本不应该使用实体框架。
我的想法是: 1.禁用EntityFramework,所有用于实现“会员”的“默认”数据连接和表。2. 通过从 SimpleMembershipProvider 继承我自己的提供程序类,在 NoSQL 上实现我自己的提供程序(以支持表单和 OAuth 身份验证) 3. 将系统配置为暂时不使用角色提供程序(尚无管理角色的要求)
不幸的是,我无法执行“步骤 1”,即从所有默认连接和表中读取。
我确实设法注册并使用了我自己的 SimpleMembershipProvider 实现,但是周围有一些代码不断调用“默认连接”。
在 web.config 中禁用 RoleManager 时,我的提供商遇到的异常示例:
InnerException: System.InvalidOperationException
HResult=-2146233079
Message=The ASP.NET Simple Membership database could not be initialized. For more information, please see http://go.microsoft.com/fwlink/?LinkId=256588
Source=MvcApplication5
StackTrace:
at MvcApplication5.Filters.InitializeSimpleMembershipAttribute.SimpleMembershipInitializer..ctor() in c:\Users\max\Documents\Visual Studio 2012\Projects\MvcApplication2\MvcApplication5\Filters\InitializeSimpleMembershipAttribute.cs:line 45
InnerException: System.Configuration.Provider.ProviderException
HResult=-2146233088
Message=The Role Manager feature has not been enabled.
Source=System.Web
StackTrace:
at System.Web.Security.Roles.EnsureEnabled()
at System.Web.Security.Roles.get_Provider()
at WebMatrix.WebData.WebSecurity.InitializeProviders(DatabaseConnectionInfo connect, String userTableName, String userIdColumn, String userNameColumn, Boolean autoCreateTables)
at WebMatrix.WebData.WebSecurity.InitializeDatabaseConnection(String connectionStringName, String userTableName, String userIdColumn, String userNameColumn, Boolean autoCreateTables)
at MvcApplication5.Filters.InitializeSimpleMembershipAttribute.SimpleMembershipInitializer..ctor() in c:\Users\max\Documents\Visual Studio 2012\Projects\MvcApplication2\MvcApplication5\Filters\InitializeSimpleMembershipAttribute.cs:line 41
InnerException:
推荐的方法是什么?(在 web.config 中?)如果我的计划中存在根本缺陷或误解,请告诉我。
感谢您的任何提示。