Eu tenho meus aplicativos Web (PRODUÇÃO, STAGING, TEST) hospedados no servidor Web IIS. Portanto, não foi possível confiar na variável de ambiente do sistema do operador ASPNETCORE_ENVIRONMENT, porque configurá-la para um valor específico (por exemplo, STAGING) afeta outros aplicativos.
Como solução alternativa, defini um arquivo personalizado (envsettings.json) na minha solução do visualstudio:
com o seguinte conteúdo:
{
// Possible string values reported below. When empty it use ENV variable value or Visual Studio setting.
// - Production
// - Staging
// - Test
// - Development
"ASPNETCORE_ENVIRONMENT": ""
}
Em seguida, com base no meu tipo de aplicativo (produção, teste ou teste), defino este arquivo de acordo: supondo que estou implantando o aplicativo TEST, terei:
"ASPNETCORE_ENVIRONMENT": "Test"
Depois disso, no arquivo Program.cs, recupere esse valor e defina o ambiente do 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();
}
}
Lembre-se de incluir o envsettings.json no publishOptions (project.json):
"publishOptions":
{
"include":
[
"wwwroot",
"Views",
"Areas/**/Views",
"envsettings.json",
"appsettings.json",
"appsettings*.json",
"web.config"
]
},
Essa solução me deixa livre para ter o aplicativo ASP.NET CORE hospedado no mesmo IIS, independentemente do valor da variável do ambiente.
Properties\launchSettings.json
para simular outro ambiente para depuração no Visual Studio.