Tengo mis aplicaciones web (PRODUCCIÓN, ESCENARIO, PRUEBA) alojadas en el servidor web IIS. Por lo tanto, no fue posible confiar en la variable de entorno del sistema operativo ASPNETCORE_ENVIRONMENT, porque establecerla en un valor específico (por ejemplo, STAGING) tiene efecto en otras aplicaciones.
Como solución alternativa, definí un archivo personalizado (envsettings.json) dentro de mi solución visualstudio:
con el siguiente contenido:
{
// Possible string values reported below. When empty it use ENV variable value or Visual Studio setting.
// - Production
// - Staging
// - Test
// - Development
"ASPNETCORE_ENVIRONMENT": ""
}
Luego, según mi tipo de aplicación (Producción, Puesta en escena o Prueba) configuré este archivo de forma acorde: suponiendo que estoy implementando la aplicación TEST, tendré:
"ASPNETCORE_ENVIRONMENT": "Test"
Después de eso, en el archivo Program.cs solo recupere este valor y luego configure el entorno de webHostBuilder:
public class Program
{
public static void Main(string[] args)
{
var currentDirectoryPath = Directory.GetCurrentDirectory();
var envSettingsPath = Path.Combine(currentDirectoryPath, "envsettings.json");
var envSettings = JObject.Parse(File.ReadAllText(envSettingsPath));
var enviromentValue = envSettings["ASPNETCORE_ENVIRONMENT"].ToString();
var webHostBuilder = new WebHostBuilder()
.UseKestrel()
.CaptureStartupErrors(true)
.UseSetting("detailedErrors", "true")
.UseContentRoot(currentDirectoryPath)
.UseIISIntegration()
.UseStartup<Startup>();
// If none is set it use Operative System hosting enviroment
if (!string.IsNullOrWhiteSpace(enviromentValue))
{
webHostBuilder.UseEnvironment(enviromentValue);
}
var host = webHostBuilder.Build();
host.Run();
}
}
Recuerde incluir el envsettings.json en PublishOptions (project.json):
"publishOptions":
{
"include":
[
"wwwroot",
"Views",
"Areas/**/Views",
"envsettings.json",
"appsettings.json",
"appsettings*.json",
"web.config"
]
},
Esta solución me permite tener la aplicación ASP.NET CORE alojada en el mismo IIS, independientemente del valor de la variable de entorno.
Properties\launchSettings.json
para simular otro entorno para la depuración en Visual Studio.