asp.net - net - SimpleMembershipProvider no funciona
login facebook asp net mvc (5)
Comencé un nuevo proyecto de Internet con VS2012 y estoy tratando de reestructurar un poco mi proyecto y parece que no puedo mantener el SimpleMemberhsipProvider funcionando. Básicamente, todo lo que hice fue mover los objetos de los modelos a un proyecto central junto con otros dos elementos. Implementé Ninject y estoy tratando de abstraer un poco a Entity usando un patrón de repositorio para obtener mis datos. Realmente no siento que haya cambiado mucho con el proyecto actual, pero por alguna razón cuando comienzo la aplicación ahora obtengo:
{"La función Administrador de funciones no se ha habilitado."}
El ActionFilter que proporciona el marco es donde se produce el error cuando:
WebSecurity.InitializeDatabaseConnection ("DefaultConnection", "UserProfile", "Id", "UserName", autoCreateTables: true);
se llama.
Aquí hay algunos de los stacktrace:
[ProviderException: la función de Role Manager no se ha habilitado.]
System.Web.Security.Roles.EnsureEnabled () +9561885
System.Web.Security.Roles.get_Provider () +8
WebMatrix.WebData.WebSecurity.InitializeProviders (DatabaseConnectionInfo connect, String userTableName, String userIdColumn, String userNameColumn, Boolean autoCreateTables) +104
WebMatrix.WebData.WebSecurity.InitializeDatabaseConnection (String connectionStringName, String userTableName, String userIdColumn, String userNameColumn, Boolean autoCreateTables) +100
InoutBoard.Core.Infrastructure.Filters.SimpleMembershipInitializer..ctor () en c: / Users / Kyle / Documents / Visual Studio 2012 / Projects / InoutBoard / InoutBoard.Core / Infrastructure / Filters / InitializeSimpleMembershipAttribute.cs: 42[InvalidOperationException: la base de datos de membresía simple de ASP.NET no se pudo inicializar. Para obtener más información, consulte http://go.microsoft.com/fwlink/?LinkId=256588]
InoutBoard.Core.Infrastructure.Filters.SimpleMembershipInitializer..ctor () en c: / Users / Kyle / Documents / Visual Studio 2012 / Projects / InoutBoard / InoutBoard.Core / Infrastructure / Filters / InitializeSimpleMembershipAttribute.cs: 46
Estoy alojando el código en github en el siguiente enlace https://github.com/keroger2k/InoutBoard
En caso de que otros obtengan este error y la solución anterior no funcione, como en mi caso. Dijo objeto hijo no válido cuando traté de agregar el marcado de conjuntos. Tuve que especificar el roleManager y las etiquetas de membresía como a continuación. Una vez que hice eso, la base de datos de actualización funcionó.
<roleManager enabled="true" defaultProvider="SimpleRoleProvider">
<providers>
<clear/>
<add name="SimpleRoleProvider" type="WebMatrix.WebData.SimpleRoleProvider, WebMatrix.WebData"/>
</providers>
</roleManager>
<membership defaultProvider="SimpleMembershipProvider">
<providers>
<clear/>
<add name="SimpleMembershipProvider"
type="WebMatrix.WebData.SimpleMembershipProvider, WebMatrix.WebData"/>
</providers>
</membership>
En lugar de agregar los ensamblados al web.config como sugiere Mehdi Golchin, una alternativa es cambiar las referencias de ensamblado en WebMatrix.Data y WebMatrix.WebData a CopyLocal = True.
Tuve exactamente el mismo error de ejecución en mi empresa de alojamiento (WinHost.com - son excelentes por cierto).
Mi solución fue agregar al web.config:
<appSettings>
<add key="enableSimpleMembership" value="true" />
</appSettings>
agregue la clave a Web.Config como la página:
[] ''s
Primera forma
Verifique la respuesta de sphair (en el hilo actual).
Segunda forma
Agregue los siguientes ensamblajes a web.config
:
<system.web>
<compilation debug="true" targetFramework="4.5">
<assemblies>
<add assembly="WebMatrix.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<add assembly="WebMatrix.WebData, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
</assemblies>
</compilation>
</system.web>
Actualizar
El ensamblado WebMatrix.WebData
contiene un método de inicio para inicializar proveedores de Membresía / Función y habilitar RoleManager ( PreApplicationStartCode.Start
). Pero ASP.NET no pudo encontrar eso para ejecutar en su caso. Al agregar estas dos líneas de código, PreApplicationStartMethodAttribute(s)
a ASP.NET a buscar estos ensamblajes para PreApplicationStartMethodAttribute(s)
.