我正在尝试使用ASP.NET MVC4来管理表单身份验证和OAuth(Facebook),并负责浏览器会话。
然而,我想在NoSQL数据存储中管理所有用户的数据(实际上是所有数据)。由于我已经拥有该商店的数据访问层库,我认为我根本不应该使用实体框架。
我的想法是: 1.禁用EntityFramework,用于实现“Membership”的所有“默认”数据连接和表。 2.通过从SimpleMembershipProvider继承我自己的提供程序类(以支持Forms和OAuth身份验证),在NoSQL之上实现我自己的提供程序 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中?) 如果我的计划存在根本缺陷或误解,请告诉我。
感谢任何提示。
答案 0 :(得分:1)
SimpleMembershipProvider 不使用Entity Framework。相反,它有自己的SQL操作。
您可以查看SimpleMembershipProvider.cs
的来源如果您要实施自定义提供程序(以支持表单和OAuth身份验证),您希望通过复制 SimpleMembershipProvider 中的一些代码来覆盖 ExtendedMembershipProvider 。
复制图像
答案 1 :(得分:0)