c# - studio - ASP.NET 5 Ocurrió un error al iniciar la aplicación
publish asp net core project to iis (4)
Este error también se produce cuando se intenta una conexión de la base de datos desde el inicio (por ejemplo, para el inicio) y falla en el servidor de implementación debido a insuficiencias previlejas en el servidor de la base de datos.
Después de publicar una aplicación web ASP.NET, intento alojar el sitio web en mi servidor local. Sin embargo, cuando lo inicio, me da este error en mi navegador:
Oops. 500 Error interno del servidor Se produjo un error al iniciar la aplicación.
¿Cómo puedo depurar qué es este error? El sitio web funciona (configuraciones de depuración y liberación) al comenzar a usar IISExpress y "web" en Visual Studio.
Estoy usando el entorno de desarrollo, y ya he especificado app.UseDeveloperExceptionPage();
.
He seguido las instrucciones aquí para implementar en IIS.
También probé la sugerencia que se ofrece aquí (se vuelve a publicar con "Eliminar todos los archivos existentes antes de publicar"). (El OP tiene un error ligeramente diferente, por eso estoy publicando una nueva pregunta).
He buscado durante horas en Internet, pero no parece haber mucho contenido al respecto. ¿Algunas ideas?
Estoy en Windows 7, usando ASP.NET 5 RC1.
Este error ocurre bajo varias condiciones. En mi situación, no tenía la cadena de conexión de la base de datos establecida correctamente. Lo arreglé en Visual Studio 2017 de la siguiente manera:
1) Haga clic derecho en el proyecto, seleccione Publicar, abra la página Publicar en el área principal.
2) Seleccione la pestaña Publicar a la izquierda
3) En la sección Resumen, hay un enlace "Configuración ...". Pinchalo. Esto abre el cuadro de diálogo Publicar.
4) Haz clic en la pestaña Configuración a la izquierda.
5) Expanda Opciones de publicación de archivos, marque "Eliminar archivos adicionales en el destino"
6) Expanda Bases de datos, marque "Usar esta cadena de conexión en el tiempo de ejecución" (esto fue rellenado previamente con mi cadena de conexión Azure SQL en función de cómo configuré originalmente mis opciones de publicación)
7) Amplíe Migraciones de Entity Framework, marque "Aplicar esta migración en publicación" (De nuevo, la cadena de conexión fue pre-poblada)
8) Haz clic en Guardar
9) Publicar
10) Cruza los dedos
Debe establecer stdoutLogEnabled=true
en el archivo web.config para ver el error real que está sucediendo. Puede dirigir dónde se escriben estos archivos con el argumento stdoutLogFile
; el siguiente ejemplo de captura de pantalla escribe en stdoutLogFile="./logs/stdout"
. (Debe asegurarse de que el directorio exista; la aplicación no lo creará)
En cuanto a no poder encontrar el archivo de configuración correcto, sí, el entorno predeterminado es producción. Está configurado para el desarrollo de forma explícita en Visual Studio en las propiedades del proyecto.
Actualización : en AspNetCore RTM, el módulo se llama aspnetCore en el nodo system.webServer en web.config. Además, como señaló @ErikE en los comentarios, web.config ahora se encuentra en la raíz del proyecto y no en wwwroot como en versiones anteriores.
El problema: lo más probable es que este error se deba a privilegios insuficientes para las Application Pool Identities
del grupo de Application Pool Identities
. Descubrir:
Vaya al Administrador de tareas de Windows y en la pestaña Detalles / Procesos (dependiendo del sistema operativo Windows) busque w3wp.exe
y debajo de <App_Pool_Name>
User name
para su aplicación ( <App_Pool_Name>
generalmente DefaultAppPool
) ejecutándose allí como un IIS Worker Process
. Si su aplicación no figura en la lista, la aplicación no tiene privilegios suficientes en su base de datos.
Para solucionarlo: haga lo siguiente y dé acceso completo a su aplicación:
Vaya a SQL Server Management Studio e inicie sesión como administrador . Abra Seguridad > Ingresos > haga clic con el botón secundario en Inicios de sesión y agregue un New Login
:
Debajo de General:
para
Login Name:
deLogin Name:
Ingrese laIIS APPPOOL/<App_Pool_Name>
generalmenteDefaultAppPool
para la
Default Database:
apunte a<Your_App_Database>
En Asignación de usuario :
en la casilla
Users mapped to this login:
- Marque la casilla para
<Your_App_Database>
a<Your_App_Database>
-En virtud del usuario, introduzca la
IIS APPPOOL/<App_Pool_Name>
generalmenteDefaultAppPool
-En el esquema predeterminado Ingrese
dbo
en el cuadro
Database role membership for:
deDatabase role membership for:
<Your_App_Database>
- Marque las siguientes casillas:
db_datareader
,db_datawriter
ypublic
Click OK
¡Ahora intenta acceder a tu aplicación y debería funcionar!