Asp.net mvc 4 角色管理器功能尚未启用,但已在配置中启用

Asp.net mvc 4 角色管理器功能尚未启用,但已在配置中启用,asp.net-mvc-4,roles,roleprovider,Asp.net Mvc 4,Roles,Roleprovider,在我的web项目中,我在名为providers的文件夹中为自定义roleProvider创建了以下类: using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace Project.Providers { public class MyCustomRoleProvider : System.Web.Security.SqlRoleProvider {

在我的web项目中,我在名为providers的文件夹中为自定义roleProvider创建了以下类:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace Project.Providers
{
  public class MyCustomRoleProvider : System.Web.Security.SqlRoleProvider
  {
    public override string[] GetRolesForUser(string username)
    {
        string[] currentUserRoles = { "Admin", "User" };
        return currentUserRoles;
    }
  }
}
我在web.config中添加了以下部分:

<roleManager enabled="true" defaultProvider="DefaultRoleProvider">
    <providers>
      <add name="DefaultRoleProvider" type="Project.Provider.MyCustomRoleProvider, MetaLearning"/>
    </providers>
  </roleManager>

我收到一个错误,角色管理器功能未启用。我做错了什么?

有时我们的项目中有两个web.config文件。与MVC4 internet应用程序项目一样,一个属于视图文件夹,这不是应用程序的配置文件。它包含使视图与ASP.NET一起工作所需的配置。
确保您在正确的web.config文件中实现了您的要求。

您是否尝试将clear元素放在标记之前,用于清除先前为此应用程序存储的所有提供程序,例如,默认提供者。是的,我使用了clear元素,但这仍然告诉我,角色管理器功能不是enabledI尝试过与您所做的相同的操作,它也起作用,但我必须在provider add中提供ConnectionString属性。只有当我注释掉完整的roleManager部分时,我才得到相同的错误。你确定它在system.web标签中吗?你确定正在使用web.config吗?你必须为提供程序添加什么connectionStringName?当我省略connectionStringName时,我在运行时会出现一个配置错误,如果你不明白,我猜你的RoleManager配置部分根本没有被取用。。。在我的例子中,connectionstringname是一个指向aspnetdb的名称。你能重复检查或发布你的完整配置吗。
Roles.AddUserToRole("username","role");