Read environment variables in ASP.NET Core Read environment variables in ASP.NET Core asp.net asp.net

Read environment variables in ASP.NET Core


Your problem is spaces around =.

This will work (attention to space before closing quote):

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

Or remove spaces (better, see comment of @Isantipov below):

set ASPNETCORE_ENVIRONMENT=Production

P.S. Stop trying to "fix error with space" in this answer! It's not a typo! The real problem in question was with extra space (in SET...), so answer is either use same space in GetEnvironmentVariable() or remove it from SET... command!


This should really be a comment to this answer by @Dmitry (but it is too long, hence I post it as a separate answer):

You wouldn't want to use 'ASPNETCORE_ENVIRONMENT ' (with a trailing space) - there are features in ASP.NET Core which depend on the value of 'ASPNETCORE_ENVIRONMENT'(no trailing space) - e.g. resolving of appsettings.Development.json vs appsettings.Production.json. (e.g. see Working with multiple environments documentation article

And also I guess if you'd like to stay purely inside ASP.NET Core paradigm, you'd want to use IHostingEnvironment.Environment(see documentation) property instead of reading from Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") directly (although the former is of course set from the latter). E.g. 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);        //<...>    }    //<...>}