0

我创建了一个 MVC 4 应用程序,并且第一次尝试使用会员资格。

我有一个 sql 数据库,我在其中创建了成员资格表,并使用“ASP.NET 配置”选择了我的提供程序、添加的角色和用户。

当我尝试使用登录页面登录时,出现错误;

要调用此方法,“Membership.Provider”属性必须是“ExtendedMembershipProvider”的一个实例。

我没有使用 azure,也没有使用 NuGet。

我的配置文件看起来像;

<membership defaultProvider="SqlMembershipProvider">
  <providers>
    <add connectionStringName="ApplicationServices" name="SqlMembershipProvider"
      type="System.Web.Security.SqlMembershipProvider" />
  </providers>
</membership>
<roleManager enabled="true" defaultProvider="SqlRoleProvider">
  <providers>
    <add connectionStringName="ApplicationServices" name="SqlRoleProvider"
      type="System.Web.Security.SqlRoleProvider" />
  </providers>
</roleManager>

这就是为我添加的所有内容。

我的帐户控制器具有以下属性,但删除它没有任何区别。

[InitializeSimpleMembership]

它在这条线上失败了;

if (ModelState.IsValid && WebSecurity.Login(model.UserName, model.Password, persistCookie: model.RememberMe))

我需要做什么才能让用户登录?

4

1 回答 1

0

您在配置中设置SqlMembershipProvider但尝试使用SimpleMembershipProvider 选择一个并相应地配置您的应用程序。如果您针对 SimpleMembersip 设置 db(最常见的是一张带有 UserId、Username 和其他字段的表),则按如下方式更改您的配置,并确保InitializeSimpleMembershipFilter查找在您的表中设置的 userId、username 字段:

<membership defaultProvider="SimpleMembershipProvider">
    <providers>
       <clear/>
       <add name="SimpleMembershipProvider" type="WebMatrix.WebData.SimpleMembershipProvider, WebMatrix.WebData" />
    </providers>
</membership>
<roleManager defaultProvider=“SimpleRoleProvider“&gt;
  <providers>
    <add name=“SimpleRoleProvider“ type=“WebMatrix.WebData.SimpleRoleProvider, WebMatrix.WebData“/>
  </providers>
</roleManager>

否则,要设置 SqlMembershipProvider,您可以参考本页底部:http: //msdn.microsoft.com/en-us/library/system.web.security.sqlmembershipprovider.aspx

于 2013-06-21T10:18:57.440 回答