Ha llegado el momento de desplegar nuestra aplicación ASP.NET Core en los entornos de nuestro cliente. Toca pensar cómo vamos a parametrizar en cada entorno los valores adecuados, para que el contexto de la aplicación sea la del entorno en la que se está ejecutando.
Si no os habéis dado cuenta, en .NET Core no tenemos, por defecto, web.config y aparece un fichero JSON llamada appsettings.
¿Cómo lo preparamos para el despliegue en Pre-Producción o en Producción?
Lo primero es asimilar que nuestra aplicación .NET Core podrá hospedarse de diferentes formas:
- Azure App Service
- IIS
- Windows Service
- Linux con un Nginx o Apache
- Docker
Ahora vamos a por el Appsettings.json, un fichero muy simple que nos permite establecer las variables de ejecución de nuestra aplicación y con el que podemos elegir si queremos un único fichero o tener un fichero por entorno, por ejemplo: appsettings.Development.json, appsettings.Production.json, appsettings.Staging.json, appsettings.XXX.json.
Con esta nomenclatura de entorno, podemos configurar el WebHost de nuestra aplicación para que lea las variables de contexto del fichero adecuado a cada entorno, con el siguiente fragmento de código:
ASP.NET Core carga la variable ASPNETCORE_ENVIRONMENT cuando la aplicación se inicia, y guarda el valor de esa variable en la propiedad EnvironmentName del objeto IHostingEnvironment, que por defecto tiene el valor «Production».
¿Cómo configurar esa variable en el entorno donde hospedamos nuestra aplicación?
Aquí tenemos que tener en cuenta el host, ya que el procedimiento no es el mismo para Azure, IIS o Linux.
Azure App Service
En Azure App Service podemos configurar una settings con la clave ASPNETCORE_ENVIRONMENT y el valor correspondiente al entorno, por ejemplo, Staging.
IIS o Windows
Aquí tenemos varias opciones:
- Configurar la variable en la consola donde estamos ejecutando nuestra aplicación
- Configurar la variable a nivel de servidor, en las «Environment Variables» del System Properties.
- En el fichero web.config que se genera cuando publicamos en el IIS
Linux
En Linux podemos exportar la variable o crear un perfil del aplicación bash con el export correspondiente
export ASPNETCORE_ENVIRONMENT=Development
Por supuesto, no es el único método, también podemos utilizar alguna tarea de transformación de las variables en la release de Visual Studio Team System y desplegar automáticamente con los valores adecuados a cada entorno.