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?

Author: Hakam Fostok, 2010-10-06

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

 285
Author: Infotekka,
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

 49
Author: Serj Sagan,
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.

 11
Author: Wade,
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:

  1. Presione Ctrl+Q , escriba nuget y haga clic en "Administrar paquetes NuGet";
  2. 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);
  3. Haga clic en el botón Instalar en ambos y cierre el NuGet window;
  4. 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>
    
  5. Añadir enabled="true" así:

    <roleManager defaultProvider="DefaultRoleProvider" enabled="true">
    
  6. 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:

    1. Prensa Ctrl+Q , escriba manager , haga clic en "Package Manager Console";
    2. 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;
    3. 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!
 7
Author: CPHPython,
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>());
 5
Author: Ogglas,
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>
 0
Author: minoo moradi,
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>
 -1
Author: Michael Goldshmidt,
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