web-dev-qa-db-fra.com

ASP Variables d'environnement de lecture .NET Core

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?

45
severin

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
88
Dmitry

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);
        //<...>
    }

    //<...>
}
9
Isantipov