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所做的所有更改:
- 按下Ctrl + Q ,inputnuget并点击“pipe理NuGet包”;
- 按Ctrl + E键入提供程序,并在列表中显示“Microsoft ASP.NET Universal Providers Core Libraries ”和“Microsoft ASP.NET LocalDB for LocalDB ”(均由Microsoft创build);
- 点击两者中的安装button并closuresNuGet窗口;
-
检查你的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>
-
join
enabled="true"
就像这样:<roleManager defaultProvider="DefaultRoleProvider" enabled="true">
-
按F6进行构build,现在应该可以继续进行数据库更新,而不会出现该exception:
- 按Ctrl + Q键入pipe理器 ,点击“Package Manager Console”;
- input
update-database -verbose
,Seed方法将运行得很好(如果你还没有搞错的话),并在你的数据库中创build一些表。 - 按Ctrl + W + L打开服务器资源pipe理器,您应该可以在新创build的表中检入Data Connections> DefaultConnection> Tables中的Roles和UsersInRoles表!
如果你使用的是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>