mvc - Mostrar la página de error ASP.NET 5 en la aplicación web Azure
asp.net core vs asp.net mvc (7)
Recibo un error interno del servidor 500 al implementar nuestra aplicación web ASP.NET 5 en una aplicación web de Azure.
¿Cómo obtengo los detalles y stacktrace para esta excepción?
He hecho lo siguiente, pero sin suerte:
Usando la página de error de diagnóstico al inicio:
app.UseErrorPage();
Configuración de
ASPNET_ENV
en el portal de Azure:
Usando DNX beta 6.
Cuando obtiene un HTTP 500 desde una aplicación web Azure que ejecuta ASP.NET 5 y no puede obtener un resultado de error detallado, en mi experiencia es por una de estas dos razones:
- Tu Startup.cs está causando el problema
- El tiempo de ejecución no se puede cargar
Para lidiar con el primer tipo de problema, es mejor que escriba un controlador de errores que registrará errores de inicio en algún lugar (utilizamos Raygun.io para eso, sus necesidades y preferencias deberían determinar su solución).
Para el segundo tipo, lo mejor que he encontrado es a través de la función de Diagnósticos de los sitios web: puede acceder a los registros de eventos de Windows Server, que le indicarán si su tiempo de ejecución está borked.
En caso de que esto ayude a alguien, descubrí que si está utilizando ASP.NET RC1 y está utilizando Azure WebApps y agrega una configuración de la aplicación llamada Hosting:Environment
con un valor de development
un seguimiento de pila para los errores del servidor 500 monitor.
Para que esto funcione, el método Configure en Startup.cs necesita usar la página de excepción de desarrollador cuando está utilizando el entorno de desarrollo. P.ej:
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) {
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
app.UseDatabaseErrorPage();
}
// etc
}
Pruebe a desactivar su modo customErrors
en su archivo Web.config como este:
<system.web>
<customErrors mode="Off" />
</system.web>
Según esta publicación (gracias Muhammad), debería poder obtener el error de tiempo de ejecución en Azure editando el web.config del servidor (bastante correcto, Celt).
Lamentablemente, esto no funcionó, no hay una excepción detallada.
Investigué un poco y encontré estos registros de "DetailedError":
Esto es lo que contenían:
Parece que algo puede estar yendo mal al intentar resolver favicon.ico
en D:/home/site/wwwroot/favicon.ico
.
De hecho, no hubo favicon en ese lugar. Rectifiqué esto, pero sigue siendo el mismo problema. De hecho, nunca he tenido un favicon, y esto solía funcionar.
Al final, eliminé toda la aplicación web en Azure Portal y volví a publicar ... TADA, funciona de nuevo.
Si todavía está en versiones antiguas de la pila DNX como yo (utilizando beta5, que es lo que se incluye con Visual Studio 2015), tenían una configuración que realmente no estaba bien documentada. Creo que esto se ha modificado desde entonces, pero esto es lo que tienes que colocar en tu web.config:
<appSettings>
<add key="ASPNET_DETAILED_ERRORS" value="true" />
</appSettings>
Su startup.cs tiene un código de tiempo de ejecución que no funciona bien con Azure. Forzar la página de excepción amigable del desarrollador para que se visualice moviendo la aplicación. UeDeveloperExceptionPage (); al comienzo de Configurar (...). Publicar código actualizado en Azure, volver a cargar la página de inicio y la excepción ahora será útil.
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
app.UseDeveloperExceptionPage();
...
}
Tenía exactamente los mismos problemas, siempre obtenía 500 y nunca había visto un log o información mínima sobre lo que estaba mal. Incluso después de comentar todo en Startup.cs y simplemente acceder a los archivos estáticos, obtenía 500 (aunque sorprendentemente, a veces el archivo estático se publicaba correctamente, cambiaba de publicación a publicación de la misma aplicación).
Supongo que algunos archivos se dañaron en mi implementación y Azure no los detectó. O tal vez hubo algunos archivos en el servidor que causaron conflictos durante el tiempo de ejecución, la próxima vez que creo que también valdría la pena cambiar el perfil de publicación para no guardar archivos adicionales en el servidor (de manera predeterminada no se eliminan).
Terminé eliminando y volviendo a crear la aplicación, lo que resolvió el problema.