Obtuve la siguiente excepción de proveedor :
La función Administrador de roles no se ha habilitado.
Hasta aquí todo bien.
¿Existe algún método al que se pueda llamar para verificar si Role Manager se ha habilitado o no?
c#
asp.net
roleprovider
gsharp
fuente
fuente
web.config
? Traté de ponerloApplication_Start
y diceThis method can only be called during the application's pre-start initialization phase.
roleManager
está habilitado. Pero ahora recibo una excepciónUnable to connect to SQL Server database
Si llegaste aquí porque estás usando lo nuevo
ASP.NET
Identity
UserManager
, lo que realmente estás buscando esRoleManager
:roleManager
le dará acceso para ver si el rol existe, crear, etc., además se crea para elUserManager
fuente
Encontré 2 sugerencias en otro lugar a través de Google que sugerían a) asegurarse de que su cadena de conexiones db (la que Roles está usando) es correcta y que la clave está escrita correctamente, yb) que el indicador Habilitado en RoleManager está establecido en verdadero. Espero que una de esas ayudas. Lo hizo por mi.
¿Intentaste comprobar Roles.Enabled? Además, puede verificar Roles.Providers para ver cuántos proveedores están disponibles y puede verificar Roles.Provider para el proveedor predeterminado. Si es nulo, entonces no hay ninguno.
fuente
Encontré esta pregunta debido a la excepción mencionada en ella. Mi Web.Config no tenía ninguna
<roleManager>
etiqueta. Me di cuenta de que incluso si lo agregué (como sugirió Infotekka ), 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.Dado que estas etiquetas Web.Config se pueden generar automáticamente, se sintió mal resolverlas agregándolas manualmente. Si se encuentra en un caso similar, deshaga todos los cambios que realizó en Web.Config y en Visual Studio:
Verifique su Web.config y ahora debe tener al menos una
<providers>
etiqueta dentro de las etiquetas Perfil , Membresía , Estado de sesión y también dentro de la nueva etiqueta RoleManager , como esta:Añadir
enabled="true"
así:prensa F6 para construir y ahora debería estar bien continuar con una actualización de la base de datos sin tener esa excepción:
update-database -verbose
y el método de Seed funcionarán bien (si no has jugado en otro lugar) y crearán algunas tablas en tu Base de Datos;fuente
Si está utilizando
ASP.NET Identity UserManager
, puede obtenerlo así también:Si ha cambiado la clave para el usuario de Guid a Int, por ejemplo, use este código:
fuente
fuente
Aquí está el código que debe poner en su controlador de cuenta en MVC5 y más adelante para obtener la lista de roles de un usuario:
csharp public async Task<ActionResult> RoleAdd(string UserID) { return View(await UserManager.GetRolesAsync(UserID)).OrderBy(s => s).ToList()); }
No hay necesidad de usar
Roles.GetRolesForUser()
y habilitar la función Role Manager.fuente