angular色pipe理器function尚未启用

得到以下的ProviderException :

angular色pipe理器function尚未启用。

到现在为止还挺好。

是否有某个方法可以调用来检查angular色pipe理器是否已经启用?

您可以通过从以下位置的布尔属性中读取:

System.Web.Security.Roles.Enabled 

这是直接从web.config中的roleManager元素的enabled属性中读取的:

 <configuration> <system.web> <roleManager enabled="true" /> </system.web> </configuration> 

更新:
有关更多信息,请查看此MSDN示例: https : //msdn.microsoft.com/zh-cn/library/aa354509(v=vs.110).aspx

如果因为使用新的ASP.NET Identity而来到这里,那么您实际上正在寻找的是RoleManager

 var roleManager = new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(new ApplicationDbContext())); 

roleManager会给你访问,看看angular色是否存在,创build等,再加上它为UserManager创build

我在Google的其他地方发现了两条build议:a)确保你的db connectionstring(Roles正在使用的那个)是正确的,并且它的关键字拼写正确,b)RoleManager上的Enabled标志被设置为true。 希望这些帮助之一。 它为我做了。

你有没有尝试检查Roles.Enabled? 此外,您可以检查Roles.Providers以查看有多less提供程序可用,并且您可以检查默认提供程序的Roles.Provider。 如果它是空的,那么没有一个。

我发现这个问题,因为它提到的例外。 我的Web.Config没有任何<roleManager>标签。 我意识到,即使我添加它(如Infotekkabuild议 ),它结束了数据库exception。 在遵循这里其他答案的build议之后,没有完全解决这个问题。

由于这些Web.Config标签可以自动生成,所以通过手动添加来解决这个问题是不对的。 如果遇到类似情况,请撤消对Web.Config和Visual Studio所做的所有更改:

  1. 按下Ctrl + Q ,inputnuget并点击“pipe理NuGet包”;
  2. Ctrl + E键入提供程序,并在列表中显示“Microsoft ASP.NET Universal Providers Core Libraries ”和“Microsoft ASP.NET LocalDB for LocalDB ”(均由Microsoft创build);
  3. 点击两者中的安装button并closuresNuGet窗口;
  4. 检查你的Web.config,现在你应该在configuration文件成员资格SessionState标签内,并且在新的RoleManager标签中至less有一个<providers>标签,如下所示:

     <roleManager defaultProvider="DefaultRoleProvider"> <providers> <add name="DefaultRoleProvider" type="System.Web.Providers.DefaultRoleProvider, System.Web.Providers, Version=2.0.0.0, Culture=neutral, PublicKeyToken=NUMBER" connectionStringName="DefaultConnection" applicationName="/" /> </providers> </roleManager> 
  5. joinenabled="true"就像这样:

     <roleManager defaultProvider="DefaultRoleProvider" enabled="true"> 
  6. F6进行构build,现在应该可以继续进行数据库更新,而不会出现该exception:

    1. Ctrl + Q键入pipe理器 ,点击“Package Manager Console”;
    2. inputupdate-database -verbose ,Seed方法将运行得很好(如果你还没有搞错的话),并在你的数据库中创build一些表。
    3. Ctrl + W + L打开服务器资源pipe理器,您应该可以在新创build的表中检入Data Connections> DefaultConnection> Tables中RolesUsersInRoles表!

如果你使用的是ASP.NET Identity UserManager你也可以这样做:

 var userManager = Request.GetOwinContext().GetUserManager<ApplicationUserManager>(); var roles = userManager.GetRoles(User.Identity.GetUserId()); 

如果您已将用户的键从Guid更改为Int,例如使用以下代码:

 var roles = userManager.GetRoles(User.Identity.GetUserId<int>()); 
 <roleManager enabled="true" cacheRolesInCookie="false" cookieName=".ASPXROLES" cookieTimeout="30" cookiePath="/" cookieRequireSSL="false" cookieSlidingExpiration="true" cookieProtection="All" defaultProvider="AspNetSqlRoleProvider" createPersistentCookie="false" maxCachedResults="25"> <providers> <clear /> <add connectionStringName="MembershipConnection" applicationName="Mvc3" name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> <add applicationName="Mvc3" name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> </providers> </roleManager>