Pregunta

publiqué sitio web ASP.NET MVC a un servidor en una máquina virtual (Hyper-V). SQL Server Express instalado en el mismo servidor.

El problema es que el sistema ASP.Net membresía no funciona en el modo integrado. Cuando Web.config archivo contiene los registros de la siguiente manera:

   <connectionStrings>
    <remove name="LocalSqlServer" />
    <add name="MyDBConnectionString" connectionString="data source=vm-1\SQLEXPRESS;Initial Catalog=testdb;Integrated Security=SSPI;" providerName="System.Data.SqlClient"/>
   </connectionStrings>

Me aparece un error al intentar registrarse e ingresar en el sitio.

Si la cadena de conexión cambio que de esta manera:

   <connectionStrings>
    <remove name="LocalSqlServer" />
    <add name="MyDBConnectionString" connectionString="data source=vm-1\SQLEXPRESS;Initial Catalog=testdb;User ID=XX;Password=XXXXXXX;" providerName="System.Data.SqlClient"/>
   </connectionStrings>

Me podría registrarse y acceder sin ningún problema.

¿Qué puede causar el problema con el uso de la base de datos de suscripción de ASP.NET en el modo de seguridad integrada?

¿Fue útil?

Solución

Si no se utiliza la suplantación que necesita para permitir el acceso a los objetos de miembros de la cuenta de proceso ASP.NET se ejecuta bajo. Lo más probable es NETWORKSERVICE. Al crear objetos de adhesión con aspnet_regsql.exe, sino que también crea papeles especiales (como aspnet_membership_BasicAccess, etc) con permisos de ejecución a los SP correspondientes. Por lo tanto crear un inicio de sesión para la cuenta NETWORKSERVICE, agregar un usuario a la base de datos para ese usuario y le conceda uno de esos papeles aspnet_.

Trate el siguiente script que utilizo como parte de mi implementación de base de datos (se debe ejecutar como administrador de base de datos):

IF NOT EXISTS (SELECT * FROM master.dbo.syslogins WHERE loginname = N'NT AUTHORITY\NETWORK SERVICE')
CREATE LOGIN [NT AUTHORITY\NETWORK SERVICE] FROM WINDOWS
GO
CREATE USER [NT AUTHORITY\NETWORK SERVICE] FOR LOGIN [NT AUTHORITY\NETWORK SERVICE] WITH DEFAULT_SCHEMA=[dbo]
GO
GRANT CONNECT TO [NT AUTHORITY\NETWORK SERVICE]
GO

exec sp_addrolemember 'aspnet_Membership_BasicAccess', 'NT AUTHORITY\NETWORK SERVICE'
GO
exec sp_addrolemember 'aspnet_Roles_BasicAccess', 'NT AUTHORITY\NETWORK SERVICE'
GO
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top