Exécution de mon application ASP.NET Core à l'aide de dnx, j'ai été en mesure de définir des variables d'environnement à partir de la ligne de commande, puis de l'exécuter comme suit:
set ASPNET_ENV = Production
dnx web
En utilisant la même approche dans 1.0:
set ASPNETCORE_ENVIRONMENT = Production
dotnet run
ne fonctionne pas - l'application ne semble pas être capable de lire les variables d'environnement.
Console.WriteLine(Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT"));
renvoie null
Qu'est-ce que je rate?
Votre problème est les espaces autour de =
.
Cela fonctionnera:
Console.WriteLine(Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT "));
Ou supprimez des espaces (mieux, voir le commentaire de @Isantipov ci-dessous):
set ASPNETCORE_ENVIRONMENT=Production
Cela devrait vraiment être un commentaire à cette réponse par @ Dmitry (mais trop longtemps, par conséquent, je le poste en tant que réponse séparée):
Vous ne voudriez pas utiliser 'ASPNETCORE_ENVIRONMENT '
(Avec un espace de fin) - il existe des fonctionnalités dans le noyau aspnet qui dépendent de la valeur de 'ASPNETCORE_ENVIRONMENT'
(Pas d'espace de fin) - par exemple. résolution de appsettings.Development.json
vs appsettings.Production.json
. (voir par exemple article sur la documentation relative à plusieurs environnements)
De plus, je suppose que si vous souhaitez rester purement dans le paradigme du noyau aspnet, vous voudriez utiliser la propriété IHostingEnvironment.Environment
(Voir docs ) au lieu de lire dans Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT")
directement (bien que le départ soit bien sûr défini par ce dernier). Par exemple. dans Startup.cs
public class Startup
{
//<...>
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
Console.WriteLine("HostingEnvironmentName: '{0}'", env.EnvironmentName);
//<...>
}
//<...>
}