net mvc iis7 enable deploy aspx asp c# asp.net iis-7 web-config

c# - mvc - install aspx on iis7



Error de inicio de sesiĆ³n para el usuario ''IIS APPPOOL / ASP.NET v4.0'' (29)

¿Has hecho lo que recomendó @Teddy y TODAVÍA recibes el mismo error?

Asegúrese de cambiar la configuración del grupo de aplicaciones que corresponde a su directorio virtual y no al servidor principal. Cada directorio virtual tiene su propio AppPool y no hereda.

Tengo un proyecto web (C # Asp.Net, EF 4, MS SQL 2008 e IIS 7) y necesito migrarlo a IIS 7 localmente (actualmente funciona bien con CASSINI).

Localmente en IIS tengo mi Default Web Site con mi implementación. Tanto mi implementación como el Default Web Site están en el grupo ASP.NET v4.0 (buscar imagen para configuraciones) en el grupo de destino Framework 4 como mi proyecto web. Al visitar el sitio, el navegador no muestra la página y permite que el navegador descargue la página en su lugar.

Tengo otros proyectos que se ejecutan en IIS localmente y funcionan sin problemas (pero no usan Entity Framework).

Usando el registrador de eventos veo los errores de la siguiente manera:

Exception information: Exception type: EntityException Exception message: The underlying provider failed on Open. at System.Data.EntityClient.EntityConnection.OpenStoreConnectionIf(Boolean openCondition, DbConnection storeConnectionToOpen, DbConnection originalConnection, String exceptionCode, String attemptedOperation, Boolean& closeStoreConnectionOnFailure) Login failed for user ''IIS APPPOOL/ASP.NET v4.0''. at System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject) at System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection) at System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory) at System.Data.SqlClient.SqlConnection.Open() at System.Data.EntityClient.EntityConnection.OpenStoreConnectionIf(Boolean openCondition, DbConnection storeConnectionToOpen, DbConnection originalConnection, String exceptionCode, String attemptedOperation, Boolean& closeStoreConnectionOnFailure)

Pregunta relacionada

ACTUALIZACIÓN: Puede leer en los recursos sobre esta pregunta que los permisos se deben otorgar en MS SQL 2008 manualmente como se explica en su respuesta. Al utilizar IIS 7.5 y MS SQL 2008 R2, no debería ser necesario configurar manualmente los permisos.


Añadir "Todos" bajo seguridad. Si agregó el Servidor y los usuarios que inician sesión en la base de datos, entonces esto es algo que falta. Espero que esto ayude.


Cassini ejecuta su sitio web como su propia identidad de usuario cuando inicia la aplicación Visual Studio. IIS ejecuta su sitio web como una identidad de grupo de aplicaciones. A menos que a la Identidad de grupo de aplicaciones se le otorgue acceso a la base de datos, obtendrá errores.

IIS introdujo la identidad del grupo de aplicaciones para mejorar la seguridad. Puede ejecutar sitios web con la Identidad de grupo de aplicaciones predeterminada, o Crear un nuevo grupo de aplicaciones con su propio nombre, o Crear un nuevo grupo de aplicaciones con su propio nombre que se ejecute bajo una cuenta de usuario (generalmente cuenta de dominio).

En situaciones de red (que no están en Azure) puede hacer que un nuevo Grupo de aplicaciones se ejecute con una cuenta de usuario de dominio de Active Directory; Prefiero esto sobre la cuenta de la máquina. Al hacerlo, proporciona seguridad granular y acceso granular a los recursos de red, incluidas las bases de datos. Cada sitio web se ejecuta en un grupo de aplicaciones diferente (y cada uno de ellos se ejecuta bajo su propia cuenta de usuario de dominio).

Continúe usando la seguridad integrada de Windows en todas las cadenas de conexión. En SQL Server, agregue los usuarios del dominio como inicios de sesión y otorgue permisos a bases de datos, tablas, SP, etc. por sitio web. Por ejemplo, DB1 utilizado por Website1 tiene un inicio de sesión para User1 porque Website1 se ejecuta en un grupo de aplicaciones como User1.

Un desafío con la implementación desde la base de datos integrada de Visual Studio (por ejemplo, LocalDB) y el servidor web incorporado a un entorno de producción se deriva del hecho de que el SID de usuario del desarrollador y sus ACL no se deben usar en un entorno de producción seguro. Microsoft proporciona herramientas para la implementación. Pero compadezca al pobre desarrollador que está acostumbrado a todo, simplemente trabajando fuera de la caja en el nuevo y sencillo IDE de VS con localDB y localWebServer, porque estas herramientas serán difíciles de usar para ese desarrollador, especialmente para un desarrollador que carece de soporte para SysAdmin y DBAdmin o Su conocimiento especializado. No obstante, la implementación en Azure es más fácil que la situación de red empresarial mencionada anteriormente.


Como se señaló, no use la autenticación de Windows, use la autenticación de SQL Server

Además, si creó la conexión con el cuadro de diálogo "Conexión del servidor", asegúrese de verificar las conexiones en web.config. Es probable que haya creado / modificado la conexión y que se haya almacenado como conexión de confianza en web.config. Simplemente usa esta autenticación

<add name="MyDBConnectionString" connectionString="Data Source=localhost;Initial Catalog=Finantial;User ID=xxx;Password=xxx" providerName="System.Data.SqlClient"/>

lo que debería arreglar el error.


Ejecutar este script sql

IF NOT EXISTS (SELECT name FROM sys.server_principals WHERE name = ''IIS APPPOOL/DefaultAppPool'') BEGIN CREATE LOGIN [IIS APPPOOL/DefaultAppPool] FROM WINDOWS WITH DEFAULT_DATABASE=[master], DEFAULT_LANGUAGE=[us_english] END GO CREATE USER [WebDatabaseUser] FOR LOGIN [IIS APPPOOL/DefaultAppPool] GO EXEC sp_addrolemember ''db_owner'', ''WebDatabaseUser'' GO


En DefaultAppPool, establezca NetworkService en la propiedad Identity y en Sql Server agregue User Network Service y asígnele los permisos apropiados para su base de datos, eso me funciona muy bien, lo he probado localmente, pero creo que esta es la mejor configuración para conectarse desde cualquier Otra computadora en la red. cuando establece LocalSystem en la Identidad en IIS, funciona bien y no es necesario crear ningún otro usuario en el Servidor SQL, pero creo que no funcionará en un entorno de red.


En caso de que agregue un nuevo inicio de sesión, asegúrese de que bajo las propiedades del servidor (clic derecho -> propiedades) / seguridad, el modo de autenticación está configurado para sqlserver y windows no solo windows.


En el formulario web de Asp.net,

este error se solucionó al instalar asp.net desde:

Administrador del servidor> Administrar> Agregar rol y característica> Roles del servidor> Servidor web (IIS)> Servidor web> Desarrollo de aplicaciones> ASP.NET 3.5 / 4.6 está instalado.

mi problema solucionado


Establecer la identidad solo hace que esto funcione en mis páginas.


Hice exactamente como dijo @JeffOgata pero me salió el error:

Windows NT user or group ''IIS APPPOOL/ASP.NET v4.0'' not found. Check the name again. (Microsoft SQL Server, Error: 15401)

Miré mi mensaje de error otra vez y dije que el Login failed for user ''IIS APPPOOL/DefaultAppPool''.

Después de agregar un usuario llamado IIS APPPOOL/DefaultAppPool todo funcionó.


Lo primero que debe aclarar si está utilizando la autenticación de Windows y no menciona ninguna contraseña de nombre de usuario en su cadena de conexión, entonces:

Qué sucede cuando ejecuta su código a través de localhost: cuando ejecuta su cliente de prueba wcf desde localhost, podrá comunicarse con la base de datos ya que la aplicación en modo de depuración local está llamando a la base de datos por el servicio de su cuenta. Por lo tanto, tiene acceso a la base de datos porque devenv.exe se ejecuta bajo su cuenta de usuario.

Pero cuando implementas tu servicio web en IIS. Ahora entienda que este servicio se ejecuta bajo IIS no bajo su cuenta. Por lo tanto, debe asignar derechos de acceso al servicio IIS para acceder al servidor SQL para la autenticación de Windows. Aquí su servicio web no podrá comunicarse con el servidor SQL debido a un problema de derechos de acceso y error de inicio de sesión para el usuario_______ (aquí llegará su usuario)

Entonces, si está usando la autenticación de Windows para conectar su base de datos, solo tiene que cambiar la configuración del grupo de aplicaciones de IIS. Debe cambiar la identidad del grupo de aplicaciones de IIS al sistema local.

A continuación, se encuentran los pasos para la autenticación de Windows WCF: • Abra IIS (windows + R (ejecutar), escriba inetmgr, luego haga clic en Aceptar) • haga doble clic en el nombre de su PC en Conexiones • Haga clic en Grupos de aplicaciones • Seleccione su grupo de aplicaciones (DefaultAppPool) • Luego debajo acciones en el botón derecho Configuración avanzada: • Vaya a la sección Modelo de proceso y • haga clic en Identidad. • Ahora seleccione LocalSystem.

Ahora abra su estudio de administración de servidor SQL: abra ejecutar-> luego escriba ssms luego presione ok en ssms, inicie sesión con su cuenta de autenticación de Windows. abrir la pestaña de seguridad expandir la pestaña de inicio de sesión, entonces podrá ver su cuenta.

Ahora abra las propiedades de su cuenta vaya a userMapping, luego seleccione la base de datos que desea conectar, luego verifique los servicios de membresía que desea usar para la base de datos seleccionada y haga clic en Aceptar. (Para los servicios de red, es decir, los usuarios de la intranet, debe configurar los ajustes anteriores para el usuario NT AUTHORITY / SYSTEM también)

agregar Trusted_Connection = True; Propiedad en su cadena de conexión. Guárdalo e implementa el servicio web. Reiniciar el grupo de aplicaciones.

Ahora podrás conectar la base de datos.


Me encontré con el mismo problema al probar ASP.NET Web API

Desarrollado Web.Host en Visual Studio 2013 Express Base de datos creada en SQL Server 2012 Express Prueba ejecutada utilizando IIS Express integrado (en funcionamiento) Modificado para usar IIS local (desde la página de propiedades - opción web) Prueba de prueba con Fiddler Error recibido: no se puede abrir la base de datos para el proveedor .... citando ''APPPOOL / DefaultAppPool''

Solución que funcionó.

En IIS

Haga clic en el grupo de aplicaciones ''DefaultAppPool'' Set Identify = ''ApplicationPoolIdentity'' Set .NET framework = v4.0 (aunque mi aplicación era 4.5)

En SQL Server Management Studio

Haga clic derecho en la carpeta Seguridad (bajo el motor de SQL Server, de modo que se aplica a todas las tablas) Haga clic derecho en Usuario y agregue ''IIS APPPOOL / DefaultAppPool'' En securables en la columna ''Otorgar'' verifique las opciones que desea dar. Con respecto a lo anterior, si usted es un DBA, probablemente sepa y quiera controlar cuáles son esas opciones. Si eres como yo, un desarrollador solo quería probar tu servicio de API WEB, el cual también tiene acceso a SQL Server a través de EF 6 en el estilo MVC y luego marca todo. :) Sí, lo sé, pero funcionó.


Me he enfrentado a un problema similar al alojar la aplicación en IIS

Solución

Cambio la identidad de la piscina y su trabajo me

ApplicationPoolIdentity -> NetworkService


No utilice la seguridad integrada. Use User Id=yourUser; pwd=yourPwd; User Id=yourUser; pwd=yourPwd;

Esto resuelve el problema.


Odio el ApplicationPoolIdentity. Siempre configuro una cuenta de usuario de Windows como la cuenta en AppPools.

Como dice la deriva, suena como un problema de seguridad de base de datos. Así que cree una cuenta de usuario de NT, asígnele el ASP.NET v4.0 AppPool y luego concédale el permiso en la carpeta del sitio web y las tablas relevantes en SQL.


Otra forma de otorgar permiso a la base de datos para el usuario IIS APPPOOL/ASP.NET v4.0 es la siguiente.


  1. Agregue un nuevo usuario con nombre de usuario y nombre de inicio de sesión como IIS APPPOOL/ASP.NET v4.0 con su esquema predeterminado.
  2. Vaya al esquema y la membresía del propietario, consulte db_datareader, db_datawriter

Para el registro, si encuentra este error después de cambiar de LocalDB a SQLEXPRESS , asegúrese de que la base de datos ya esté en SQLEXPRESS . Puedes verificar esto en Management Studio.

Tuve el mismo problema al usar Entity Framework después de cambiar a SQLEXPRESS from LocalDB . Tuve que ejecutar el comando Update-Database . Pude conectarme con éxito después de eso.


Parece que está fallando al intentar abrir una conexión a SQL Server.

IIS APPPOOL/ASP.NET v4.0 agregar un inicio de sesión a SQL Server para IIS APPPOOL/ASP.NET v4.0 y conceder permisos a la base de datos.

En SSMS, debajo del servidor, expanda Seguridad, luego haga clic con el botón derecho en Inicios de sesión y seleccione "Nuevo inicio de sesión ...".

En el cuadro de diálogo Nuevo inicio de sesión, ingrese el grupo de aplicaciones como nombre de inicio de sesión y haga clic en "Aceptar".

A continuación, puede hacer clic con el botón derecho en el inicio de sesión del grupo de aplicaciones, seleccionar Propiedades y seleccionar "Asignación de usuarios". Compruebe la base de datos apropiada y los roles apropiados. Creo que solo podría seleccionar db_datareader y db_datawriter , pero creo que aún tendría que otorgar permisos para ejecutar procedimientos almacenados si lo hace a través de EF. Puedes consultar los detalles de los roles here .


Pensé que publicaría esto como una respuesta, ya que es relevante para la pregunta y puedo responderla en algunos casos.

¡Ese mismo mensaje aparece también si la base de datos no existe!

Asegúrese de que la cadena de conexión no tenga errores ortográficos, apunte a la instancia de servidor correcta, etc.


Puede cambiar ApplicationPoolIdentity desde IIS7 -> Grupos de aplicaciones -> Configuración avanzada.

En ApplicationPoolIdentity encontrará el sistema local. Esto hará que su aplicación se ejecute bajo NT AUTHORITY/SYSTEM , que es un inicio de sesión existente para la base de datos por defecto.

Edición: antes de aplicar esta sugerencia, debe tener en cuenta y comprender las implicaciones de seguridad.


Puede enfrentar este error en una base de datos específica que se crea después de la actualización de SSMS. Abra SSMS y seleccione sus bases de datos y abra su base de datos requerida, luego haga clic en Seguridad -> Usuarios -> y haga clic con el botón derecho en Usuarios y haga clic nuevamente en ''Nuevo usuario'' y agregue ''AUTORIDAD DE NT / Usuarios autenticados'' y guarde su trabajo y vaya a su formulario en la web / escritorio lo que sea. Disfrutar....


Recibí este mensaje y uso la autenticación de Windows en el servidor web.

Quería que el usuario web autenticado actualmente fuera autenticado en la base de datos, en lugar de utilizar el Usuario IIS APPPOOL / ASP.NET v4 especificado en el Grupo de Aplicaciones.

Lo encontré ingresando lo siguiente en el archivo .config arreglado esto para mí:

<system.web> <identity impersonate="true" /> </system.web>

https://msdn.microsoft.com/en-us/library/bsz5788z.aspx

Veo otras respuestas relacionadas con la creación del nombre de usuario de AppPool en la base de datos de SQL o simplemente para usar la autenticación de SQL. Ambos serían correctos si no quisiera capturar o proteger a usuarios individuales de Windows dentro de SQL.

Tom


Resolví este problema usando SQL como la siguiente imagen.

Haga clic con el botón derecho en db-> propiedades -> permiso -> Ver permiso del servidor -> y luego seleccione IIS APPPOOL/ASP.NET v4.0 y conceda el permiso.


Si en la cadena de conexión ha especificado:

User ID=xxx;Password=yyy

pero en la cadena de conexión hay:

Trusted_Connection=true;

SQL Server usará la autenticación de Windows, por lo que sus valores de conexión se ignorarán y se anularán (IIS usará la cuenta de Windows especificada en el perfil de usuario de Identity). más información aquí

Lo mismo se aplica si en la cadena de conexión hay:

Integrated Security = true;

o

Integrated Security = SSPI;

porque la autenticación de Windows se utilizará para conectarse al servidor de base de datos. más información aquí


Si tiene la cadena de conexión agregada en su web.config, asegúrese de que "Integrated Security = false;" por lo que usaría el ID y la contraseña especificados en web.config.

<connectionStrings> <add providerName="System.Data.SqlClient" name="MyDbContext" connectionString="Data Source=localhost,1433;Initial Catalog=MyDatabase;user id=MyUserName;Password=MyPassword;Trusted_Connection=true;Integrated Security=false;" /> </connectionStrings>


Tuve este problema y en realidad fue causado por algo diferente: tenía el usuario ''IIS APPPOOL / ASP.NET v4.0'' en mi base de datos pero aún no funcionaba.

Recientemente había actualizado mi instalación de SQL Server y, en el proceso, el usuario se había desconectado del inicio de sesión, por lo que había un ''IIS APPPOOL / ASP.NET v4.0'' en Base de datos -> Seguridad -> Usuarios PERO ningún usuario no está bajo seguridad -> Inicios de sesión.

Se agregó el Inicio de sesión ''IIS APPPOOL / ASP.NET v4.0'' a Seguridad -> Inicios de sesión, SQL Server lo asignó automáticamente al Usuario en la base de datos (esto solía hacerse de forma manual) y se solucionó el problema.


Utilicé el SQL Server Profiler (disponible en el menú SSMS => Herramientas) y vi (cuando IIS intentó conectarse a la base de datos) que mi usuario de IIS era por alguna razón NT AUTHORITY / IUSR, sin importar todos los pasos recomendados en las respuestas a esta pregunta . Así que agregué ese usuario a SQL Server, y funcionó ...


asegúrate de que tienes ...

Trusted_Connection=false;

en su cadena de conexión


vaya a iis -> grupos de aplicaciones -> encuentre su grupo de aplicaciones utilizado en la aplicación

seleccione su grupo de aplicaciones utilizado para la aplicación haga clic con el botón derecho seleccione configuración avanzada

Seleccione la identidad del grupo de aplicaciones

Seleccione integrado como sistema local y haga clic en Aceptar