MVC4扩展成员提供程序和Entity Framework。

9
我希望能够在应用程序中使用与ASP成员身份验证表单相同的数据库。我目前正在使用MVC4。当我开始添加system.web.providers到我的项目时,我得到了一个单独的默认连接。我已经修改了字符串以指向与我的应用程序(entityframework)中使用的数据库相同的数据库。
我是否应该期望这些提供程序在此数据库中自动创建以下表:
- webpages_Membership - UserProfile - webpages_Roles - webpages_OAuthMembership 但是,当前我尝试通过默认的MVC4应用程序模板注册新用户时,我得到了以下错误信息:"要调用此方法,"Membership.Provider"属性必须是"ExtendedMembershipProvider"的实例。",并且这些表不存在。
谢谢, Tim
2个回答

12

这里的问题是默认的MVC4互联网模板使用SimpleMembership来管理成员/角色信息。模板中的代码对此有假设,并且只能与SimpleMembership一起使用。当您安装Universal Providers时,由于无法理解Universal Providers,帐户控制器代码将崩溃。请参阅此文章,进一步说明这种情况。 http://weblogs.asp.net/jgalloway/archive/2012/08/29/simplemembership-membership-providers-universal-providers-and-the-new-asp-net-4-5-web-forms-and-asp-net-mvc-4-templates.aspx


感谢Pranav的发现,已经解决了通用提供程序问题。现在我只需要解决我的Web.config中存在两个连接字符串的问题。一个用于实体框架连接,另一个是普通的连接字符串,但是指向相同的数据库,用于webpages_tables(简单成员资格提供程序表)。 - Tim
+1 感谢提供链接。我一直在努力理解 MVC4 成员资格表的不同之处以及发生了什么变化。文章中的“WSAT 是为与 ASP.NET 成员资格一起使用而构建的,不兼容 Simple Membership。”和其他信息帮助我澄清了这一点。 - AlignedDev
1
@Tim,自EF 4.1(如果我没记错的话)以来,您可以使用POCO类和派生的DbContext。如果您使用DbContext("connStringName")构造函数和WebSecurity.InitializeDatabaseConnection("connStringName"...),那么您肯定会使用一个连接字符串。 - CallMeLaNN
有人知道如何将旧的MVC 4互联网项目升级以使用SimpleMembership吗? - Nikos

2

我有同样的问题,

然而我的问题还没有解决,但很多人说将下面的内容添加到你的web.config文件中。

<add key="enableSimpleMembership" value="false"/>
<add key="autoFormsAuthentication" value="false"/>

如果这样不起作用,尝试将顶部的也设置为true。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接