2012-06-22 28 views
8

Estoy intentando habilitar el inicio de sesión utilizando la plantilla predeterminada de MVC 4 RC. Lo hice de la misma manera que en MVC 3, Aspnet_regsql.exe -> servidor SQL. Luego hice que la secuencia de conexión apuntara al servidor SQL.MVC 4 RC - Aspnet_regsql.exe

Cuando intento registrar un nuevo usuario me sale esto:

Server Error in '/' Application. 

Invalid column name 'ApplicationId'. 
Invalid column name 'UserName'. 
Invalid column name 'ApplicationId'. 
Invalid column name 'UserId'. 
Invalid column name 'UserName'. 
Invalid column name 'IsAnonymous'. 
Invalid column name 'LastActivityDate'. 

error en AccountController:

   Line 85: // Attempt to register the user 
       Line 86: MembershipCreateStatus createStatus; 
Error here -> Line 87: Membership.CreateUser(model.UserName, model.Password, model.Email, passwordQuestion: null, passwordAnswer: null, isApproved: true, providerUserKey: null, status: out createStatus); 
       Line 88: 
       Line 89: if (createStatus == MembershipCreateStatus.Success) 

que he estado tratando de google este error, pero sin suerte hasta ahora. ¿Hay alguna otra forma en que debería estar haciendo esto en MVC 4?

+0

¿Encontró una solución? Si ejecuto el generador de perfiles SQL, las declaraciones SQL generadas por 'DefaultMembershipProvider' utilizan nombres de tablas diferentes a' aspnet_regsql' ('Aplicaciones' en lugar de' aspnet_Applications' y 'Users' en lugar de' aspnet_Users'). Una solución es cambiar el nombre de las tablas para adaptarlas al proveedor de membresía o escribir un proveedor de membresía personalizado para MVC. –

Respuesta

10

Recibí el mismo error porque estaba usando tablas de membresía de aspnet_regsql.exe versión 2.x. Ejecuté el ejecutable aspnet_regsql.exe en la carpeta de la versión 2.x y desinstalé las tablas. Luego, con los nuevos proveedores universales ya no necesita usar el ejecutable anterior, las tablas se crean cuando se conecta por primera vez.

Este artículo entra en más detalles de las diferencias entre el antiguo aspnet_Memembership vs Universal Providers.

Stronger Password Hasing Net

Los puntos clave del artículo:

En primer lugar, hay no másaspnet_regsql, sólo asegúrese de que su cadena de conexión se establece y la cuenta tiene los derechos DBO (no hacer preocúpese, no tiene que seguir así) luego ejecute la aplicación e intente realizar cualquier acción que cause que el proveedor de membresía golpee el DB (es decir, inicie sesión; no importa que no haya una cuenta))

Eso es todo lo que hay que hacer.

+0

"En primer lugar, no hay más aspnet_regsql, solo asegúrate de que tu cadena de conexión esté establecida ..." y todo funcionó perfectamente :) ¡No más herramienta de registro! Muchas gracias :) – judehall

+0

El problema que tengo con el hecho de que no hay aspnet_regsql.exe equivalente para el nuevo marco System.Web.Providers, es que no puedo crear el esquema db y luego sembrar la Membresía con usuarios administradores y roles ANTES de permitir que los usuarios públicos se registren. Creé el MvcInstaller (NuGet y github) y usa aspnet_regsql.exe para instalar el sistema de Membresía para los administradores. Esto no me permite actualizar mi componente para el nuevo sistema. Es frustrante. – Kahanu

Cuestiones relacionadas