ASP.net MVC 4用户和角色管理("Membership.Provider"属性必须是"ExtendedMembershipProvider"的实例.)

osk*_*132 16 c# asp.net asp.net-mvc asp.net-mvc-4

我已经尝试了2天才能得到一些工作,但到目前为止它一直没有意义.我需要的是管理用户及其角色,没有别的.

我试过的是要了解如何在MVC中做到这一点,但我似乎无法在互联网或任何MVC 4书中找到关于如何做到这一点的详细教程.

我首先使用aspnet_regsql实用程序启用aspnet数据库,这将创建这些表:

aspnet_regsql添加的表

这就是我在教程中找到的所有内容,它没有显示如何与这些表进行交互(我假设它是默认的成员资格提供者),到目前为止,我发现有3个主要选项可以做到这一点:

  • 默认会员提供者(我从不知道)
  • 通用提供商
  • SimpleMembership

我找到了这个教程:

http://www.asp.net/mvc/tutorials/mvc-music-store/mvc-music-store-part-7

在这里,他们要求使用互联网应用程序模板创建一个新的MVC 4应用程序项目,并复制与帐户控制相关的所有文件.

我为我的项目做了那个,但是当我尝试登录时,我得到:

要调用此方法,"Membership.Provider"属性必须是"ExtendedMembershipProvider"的实例.

根据这个论坛:http: //social.msdn.microsoft.com/Forums/en-US/windowsazuredevelopment/thread/d352bb1b-577c-42b7-8872-5ed59cd65f32/

是因为我在web.config文件中定义了配置文件,成员资格和角色管理器提供程序,其定义如下:

<profile>
  <providers>
    <clear />
    <add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="DatabaseConnection" applicationName="/" />
  </providers>
</profile>
<membership>
  <providers>
    <clear />
    <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="DatabaseConnection" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/" />
  </providers>
</membership>
<roleManager enabled="true">
  <providers>
    <clear />
    <add connectionStringName="DatabaseConnection" applicationName="/" name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" />
    <add applicationName="/" name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" />
  </providers>
</roleManager>
Run Code Online (Sandbox Code Playgroud)

我所需要的只是能够添加新用户,为他们分配角色并根据访问视图的角色显示不同的内容.

问题#1 使用互联网应用程序模板创建MVC 4应用程序时使用的成员资格提供程序是什么?

问题2

我在web.config文件中做错了什么?如何正确定义提供程序?

问题#3

哪个选项更适合我?如果你知道一个很好的教程,请你链接我吗?

任何帮助将非常感谢!提前致谢!

Win*_*Win 4

您使用的会员提供商已过时。新的通用成员资格提供程序使用不带前缀的新表名称aspnet_

1)请查看 Scott Hanselman 的链接。

profile2)如果不使用则不需要。roleManager配置不正确。

仅供参考:请machineKey在 web.config 中明确定义;它会为你在未来省去很多麻烦。

PS我同意你的观点。我刚刚读完Pro ASP.NET MVC 4 by Adam Freeman;他没有提到会员提供商。ASP.NET MVC 4 and the Web API by Jamie Kurtz如果您想阅读,请使用旧版会员提供程序。