76 votes

ASP .NET de Base en lecture des variables d'environnement

L'exécution de mon ASP.NET de Base-application à l'aide de modèles dnx j'ai été en mesure de définir des variables d'environnement à partir de la ligne de commande et l'exécuter ensuite comme ceci:

set ASPNET_ENV = Production
dnx web

En utilisant la même approche de la version 1.0:

set ASPNETCORE_ENVIRONMENT = Production
dotnet run

ne fonctionne pas - l'application ne semble pas être en mesure de lire les variables d'environnement.

Console.WriteLine(Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT"));

renvoie la valeur null

Ce qui me manque?

128voto

Dmitry Points 7136

Votre problème est que les espaces autour de =.

Cela va fonctionner:

Console.WriteLine(Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT "));

Ou supprimer les espaces:

set ASPNETCORE_ENVIRONMENT=Production

17voto

Isantipov Points 7964

Ce doit vraiment être un commentaire de cette réponse par @Dimitri (mais ce serait trop long, donc je poste en tant que distincte de réponse):

Vous ne voulez pas utiliser 'ASPNETCORE_ENVIRONMENT ' (avec un espace arrière) - il ya des éléments dans le réseau de base qui dépendent de la valeur de 'ASPNETCORE_ENVIRONMENT'(pas de fuite de l'espace) - par exemple, la résolution de l' appsettings.Development.json vs appsettings.Production.json. (voir, par exemple, de Travailler avec de multiples environnements docs de l'article

Et je suppose que si vous souhaitez rester purement à l'intérieur du réseau de base paradigme, vous voulez les utiliser IHostingEnvironment.Environment(voir docs) à la propriété plutôt que de lire à partir d' Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") directement (bien que l'ancien est bien sûr définir à partir de ce dernier). E. g. en Démarrage.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);
        //<...>
    }

    //<...>
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X