18

Lauf meines ASP.NET-Core-App dnx konnte ich Umgebungsvariablen aus der Kommandozeile setzen und es dann wie folgt aus:ASP .NET Kern las Umgebungsvariablen

set ASPNET_ENV = Production 
dnx web 

Mit dem gleichen Ansatz in 1.0:

set ASPNETCORE_ENVIRONMENT = Production 
dotnet run 

funktioniert nicht - die App scheint nicht in der Lage, Umgebungsvariablen zu lesen.

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

gibt null zurück

Was bin ich?

Antwort

34

Ihr Problem ist Leerzeichen um =.

Dies funktioniert:

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

Oder Leerzeichen entfernen:

set ASPNETCORE_ENVIRONMENT=Production 
+0

Dmitry, wo sollten wir dies ausführen Befehl "SET" ... in Commandprompt ?? – Aswartha

+0

Aswartha, Es hängt von Ihrer Maschine/Szenario. Sie dies ausführen können in der Eingabeaufforderung vor "dotnet run" (in der gleichen Eingabeaufforderung), wenn von der Eingabeaufforderung aus gestartet, oder Hinzufügen zu "Arbeitsplatz" Umgebungsvariablen (für alle Anwendungen auf dem aktuellen Rechner), o r [in 'launchSettings'] (https://docs.asp.net/en/latest/fundamentals/environments.html) (wenn von VS aus gesehen) oder in der WebApp-Konfiguration bei der Ausführung in Azure. – Dmitry

+0

Okay, und was passiert, wenn wir '=' Zeichen oder Leerzeichen '' als Teil des Umgebungsvariablenwerts haben? Wie sollen wir diese zuordnen/holen? – nicks

0

Das ist wirklich ein Kommentar zu this answer von @Dmitry sein sollte (aber zu lang, daher poste ich es als eine separate Antwort) :

Sie möchten nicht 'ASPNETCORE_ENVIRONMENT ' (mit einem abschließenden Leerzeichen) verwenden - es gibt Funktionen in Aspnet-Kern, die von abhängen Wert von 'ASPNETCORE_ENVIRONMENT' (kein nachstehendes Leerzeichen) - z.B. Auflösung von appsettings.Development.json vs appsettings.Production.json. (Siehe zB Working with multiple environments docs article

Am auch ich denke, wenn Sie mögen rein innen aspnet Kernparadigma bleiben, würden Sie wollen IHostingEnvironment.Environment verwenden (siehe docs) Immobilie statt direkt von Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") lesen (obwohl die Fromer natürlich Satz von letzterem), z. B. in 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); 
     //<...> 
    } 

    //<...> 
}