La función Administrador de roles no se ha habilitado
Obtuvo la siguiente ProviderException :
La función Administrador de roles no se ha habilitado.
Hasta ahora todo bien.
¿Hay algún método al que se pueda llamar para comprobar si el Gestor de roles ha sido habilitado o no?
7 answers
Puede hacer esto leyendo de la propiedad booleana en:
System.Web.Security.Roles.Enabled
Esta es una lectura directa del atributo enabled
del elemento roleManager
en el web.config
:
<configuration>
<system.web>
<roleManager enabled="true" />
</system.web>
</configuration>
Actualización:
Para obtener más información, consulte este ejemplo de MSDN: https://msdn.microsoft.com/en-us/library/aa354509 (v=vs.110). aspx
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-11-22 17:36:52
Si llegaste aquí porque estás usando el nuevo ASP.NET
Identity
UserManager
, lo que realmente estás buscando es el RoleManager
:
var roleManager = new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(new ApplicationDbContext()));
roleManager
le dará acceso para ver si el rol existe, crear, etc, además de que se crea para el UserManager
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-04-23 05:40:54
Encontré 2 sugerencias en otros lugares a través de Google que sugerían a) asegurarse de que su cadena de conexiones de base de datos (la que Roles está usando) sea correcta y que la clave esté escrita correctamente, y b) que la bandera Habilitada en RoleManager esté establecida en true. Espero que uno de esos ayude. Lo hizo por mí.
¿Intentaste comprobar roles?Habilitado? Además, puede verificar los roles.Proveedores para ver cuántos proveedores están disponibles y puede verificar los roles.Proveedor para el proveedor predeterminado. Si es null, entonces no hay ninguna.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-11-04 00:12:38
Encontré esta pregunta debido a la excepción mencionada en ella. Mi Web.Config no tenía ninguna etiqueta <roleManager>
. Me di cuenta de que incluso si lo agrego (como Infotekka sugirió), terminó en una excepción de base de datos. Después de seguir las sugerencias en las otras respuestas aquí, ninguno resolvió completamente el problema.
Desde estos Web.Las etiquetas de configuración se pueden generar automáticamente, se sintió mal resolverlo agregándolas manualmente. Si se encuentra en un caso similar, deshaga todos los cambios realizados en Web.Configuración y en Visual Studio:
- Presione Ctrl+Q , escriba nuget y haga clic en "Administrar paquetes NuGet";
- Presione Ctrl+E , escriba providers y en la lista debería aparecer "Microsoft ASP.NET Proveedores universales Bibliotecas principales " y "Microsoft ASP.NET Proveedores universales para LocalDB " (ambos creados por Microsoft);
- Haga clic en el botón Instalar en ambos y cierre el NuGet window;
-
Revisa tu Web.config y ahora deberías tener al menos una etiqueta
<providers>
dentro del perfil , Miembros, SessionState etiquetas y también dentro de la nueva etiqueta RoleManager , así:<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>
-
Añadir
enabled="true"
así:<roleManager defaultProvider="DefaultRoleProvider" enabled="true">
-
Presione F6 para Construir y ahora debería estar bien proceder a una actualización de la base de datos sin tener esa excepción:
- Prensa Ctrl+Q , escriba manager , haga clic en "Package Manager Console";
- Escriba
update-database -verbose
y el método Seed se ejecutará bien (si no ha ensuciado en otro lugar) y creará algunas tablas en su base de datos; - Presione Ctrl+W+L para abrir el Explorador del servidor y usted debe ser capaz de comprobar en Conexiones de datos > DefaultConnection > Tablas los Roles y UsersInRoles tablas entre los recién creados ¡mesas!
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 11:54:40
Si estás usando ASP.NET Identity UserManager
también puedes obtenerlo así:
var userManager = Request.GetOwinContext().GetUserManager<ApplicationUserManager>();
var roles = userManager.GetRoles(User.Identity.GetUserId());
Si ha cambiado la clave para el usuario de Guid a Int, por ejemplo, use este código:
var roles = userManager.GetRoles(User.Identity.GetUserId<int>());
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-07-05 14:01:52
Pruebe esto en su configuración web me funcionó
<configuration>
<system.web>
<roleManager enabled="true" />
</system.web>
</configuration>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-07-16 08:08:20
<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>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-09-18 19:08:44