Manejo de Errores: Development environment should not be enabled in deployed applications

M

Este es un error bien típico que podemos tener al momento de publicar nuestras aplicaciones. A continuación la descripción del escenario para que entedamos por qué ocurre y como solucionarlo…

  1. He creado un App service en Azure con el propósito de publicar una aplicación web  en .NET core.
  2. Cree mi aplicacion web, hice mis conexiones de lugar a la base de datos también hosteada en azure y me dispuse a publicar y la aplicación.
  3. Al instante el navegador me dirije a la dirección de mi website y me muestra el siguiente error.

Como se han imaginado o pudieran haber visto en stackoverflow la solución puede ser tan simple como cambiar la propiedad de “enviroment” en nuestro archivo de  appsettings.json; pero esto es una mala práctica cuando estamos trabajando con app services en Azure.

Lo veremos a medida en este artículo. Lo primero que debemos saber que es un “app service environment” , básicamente una implementación del servicio de aplicaciones de azure en una subred en la instancia de Azure Virtual Network de un cliente. 

 

Esta consta de:
  • Front end: donde HTTP o HTTPS termina en un entorno de servicio de aplicaciones
  • Workers: los recursos que alojan sus aplicaciones
  • Base de datos: contiene información que define el entorno.
  • Almacenamiento: utilizado para alojar las aplicaciones publicadas por el cliente.

En nuestro caso estaríamos configurando un app service para el sistema operativo de linux con el framework .NET Core.

 

Cómo funciona?

La configuración en ASP.NET Core es realizada por uno o más proveedores de configuración como los que vemos en esta tabla. Estos usan una variedad de fuentes de configuración:

  • appsetting.json
  • Environment variables
  • Azure key vault
  • Azure app Configuration

Para nuestro caso de estudio lo que nos corresponde configurar es la variable de entorno, para determinar el “runtime environment”, ASP .NET Core lee desde: 

  • DOTNET_ENVIRONMENT
  • ASPNETCORE_ENVIRONMENT cuando se llama a ConfigureWebHostDefaults. Las plantillas predeterminadas de la aplicación web ASP.NET Core llaman a ConfigureWebHostDefaults. El valor ASPNETCORE_ENVIRONMENT anula DOTNET_ENVIRONMENT.
  • Desarrollo: el archivo launchSetting.json para entorno de desarrollo en la máquina local.
  • Staging
  • Producción

 

Desarrollo

Cuando estamos trabajando en local podemos setear el enviroment en el archivo appsettings.json, cuando estamos en el modo development pueden salir a flote cosas que no deberían en producción como la foto del principio que es básicamente “Developer Exception Name”.

El archivo launchSettings.json tiene las siguientes caracteristicas:

  • Es usado solamente en la máquina legalmente.
  • No es publicado.
  • Contiene la configuración del perfil.
  • Sobrescribe los valores asignados en el entorno de sistema.

En esencia así es como luce este archivo:


Con esta configuración no tendremos ningún problema cuando estemos ejecutando el código en nuestra máquina y aquí viene la frase…

– ”En mi maquina funciona”

-Pero no usaremos la tuya como server :p

 

 

 

 

 

Sin embargo, el error presentado es cuando publicamos nuestro appservice. Entonces aqui viene el siguiente escenario…

Producción

El entorno de producción debe ser configurado para maximizar la seguridad, rendimiento, y robustez de la aplicación. Algunas configuraciones que varían del entorno de desarrollo son:

  • Las páginas de error
  • Caché
  • Diagnóstico de errores

Para la configuración del entorno depende del sistema operativo, por defecto la última configuración es la escogida. En caso de que no exista ninguna de las anteriores, el entorno por defecto es Producción, Lo que termina por deshabilitar muchas de las características para debuggear. 


Nota:

El entorno de la aplicación no puede cambiarse mientras la aplicación está corriendo.


Para definir el entorno con Azure App Service los pasos que debemos dar son los siguientes:

  1. Seleccionar el app service a modificar.
  2. Elegir la opción de “configuration”.
  3. En el application settings  tab, seleccionar New application setting.
  4. Agregamos el ASPNETCORE_ENVIROMENT por el Name. Para el Value, ponemos el valor correspondiente “Development”.
  5. Click a OK  en la pantalla principal.
  6. Guardamos los cambios y listo!

Portal Azure

Azure se encargará de reiniciar el app service en nuestro portal y ya podremos acceder a nuestro site con las configuraciones correspondientes. Hasta la próxima amigos!

Acerca del Autor

leslie.ramirez

Soy estudiante Ing. De tecnología de la Información y comunicación, tecnólogo superior en Desarrollo de Software. Me considero una persona innovadora y creativa, disfruto aprender cosas nuevas y desarrollar aplicaciones.

Entradas recientes

Categorías