J'ai mes applications Web (PRODUCTION, STAGING, TEST) hébergées sur le serveur Web IIS. Il n'était donc pas possible de s'appuyer sur la variable d'environnement système de l'agent ASPNETCORE_ENVIRONMENT, car sa définition sur une valeur spécifique (par exemple STAGING) a un effet sur d'autres applications.
Pour contourner le problème, j'ai défini un fichier personnalisé (envsettings.json) dans ma solution visualstudio:
avec le contenu suivant:
{
// Possible string values reported below. When empty it use ENV variable value or Visual Studio setting.
// - Production
// - Staging
// - Test
// - Development
"ASPNETCORE_ENVIRONMENT": ""
}
Ensuite, en fonction de mon type d'application (Production, Staging ou Test), j'ai défini ce fichier en conséquence: en supposant que je déploie une application TEST, j'aurai:
"ASPNETCORE_ENVIRONMENT": "Test"
Après cela, dans le fichier Program.cs, récupérez simplement cette valeur, puis définissez l'environnement 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();
}
}
N'oubliez pas d'inclure le envsettings.json dans les publishOptions (project.json):
"publishOptions":
{
"include":
[
"wwwroot",
"Views",
"Areas/**/Views",
"envsettings.json",
"appsettings.json",
"appsettings*.json",
"web.config"
]
},
Cette solution me rend libre d'avoir une application ASP.NET CORE hébergée sur le même IIS, indépendamment de la valeur de la variable d'environnement.
Properties\launchSettings.json
pour simuler un autre environnement de débogage dans Visual Studio.