En este post vamos a analizar otra característica nueva incluida en ASP.NET Core: El soporte para controlar el comportamiento de nuestra aplicación en múltiples ambientes a través del uso de variables de entorno.
Es muy común que necesitemos especificar ciertos comportamientos en nuestra aplicación dependiendo del ambiente usado. Un modelo muy usual en los proyectos de software es tener ambiente de desarrollo, de pruebas o staging y ambiente de producción. Pues bien, en ASP.NET Core podemos hacer uso de una variable de entorno con el nombre ASPNET_ENV para indicar el ambiente en el que nuestra aplicación está ejecutándose. Con esta variable podemos chequear ciertos valores que nos proponen por convención o bien podemos usar nuestro propio nombre de ambiente.
Inicialmente tenemos las convenciones propuestas para el valor de la variable ASPNET_ENV por el equipo de producto de ASP.NET, que son:
  • Ambiente de desarrollo: Development
  • Ambiente de pruebas: Staging
  • Ambiente de producción: Production
Vamos a ver un ejemplo a continuación para entender mejor esto. En un proyecto ASP.NET Core vamos a agregar un controlador MVC con el siguiente código:
public class HomeController : Controller
{
    private IHostingEnvironment _environment;
 
    public HomeController(IHostingEnvironment environment)
    {
        _environment = environment;
    }
    public IActionResult Index()
    {
        if (_environment.IsDevelopment())
        {
            // ASPNET_ENV = Development
            ViewData["environment"] = "Desarrollo";
        }
        else if (_environment.IsStaging())
        {
            // ASPNET_ENV = Staging
            ViewData["environment"] = "Pruebas - Staging";
        }
        else if (_environment.IsProduction())
        {
            // ASPNET_ENV = Production
            ViewData["environment"] = "Produccion";
        }
        else if (_environment.IsEnvironment("MiAmbiente"))
        {
            // ASPNET_ENV = MiAmbiente
            ViewData["environment"] = "Mi ambiente";
        }
        else
        {
            // ASPNET_ENV = ?
            ViewData["environment"] = "Otro ambiente :P";
        }
 
        return View();
    }
}

coreenvironments02