读取 ASP.NET Core 中的环境变量
Read environment variables in ASP.NET Core
运行 我的 ASP.NET 核心应用程序使用 ,我能够从命令行设置环境变量,然后 运行 像这样:
set ASPNET_ENV = Production
dnx web
在 1.0 中使用相同的方法:
set ASPNETCORE_ENVIRONMENT = Production
dotnet run
不起作用 - 应用程序似乎无法读取环境变量。
Console.WriteLine(Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT"));
returns 空
我错过了什么?
您的问题是 space 大约 =
。
这会起作用(在结束引用前注意 space):
Console.WriteLine(Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT "));
这段代码中ASPNETCORE_ENVIRONMENT
后面的space不是错字!问题中的问题是有额外的 space (在 SET...),所以你必须在 GetEnvironmentVariable().
中使用相同的 space
如 所述,更好的解决方案是从 SET 命令中完全删除 space:
set ASPNETCORE_ENVIRONMENT=Production
这真的应该是对 by @Dmitry 的评论(但是它太长了,因此我 post 它作为一个单独的答案):
您不想使用 'ASPNETCORE_ENVIRONMENT '
(尾随 space)- ASP.NET Core 中的某些功能取决于 'ASPNETCORE_ENVIRONMENT'
的值(没有尾随 space) - 例如解析 appsettings.Development.json
与 appsettings.Production.json
。 (例如,参见 Working with multiple environments documentation article
而且我想如果你想完全留在 ASP.NET 核心范例中,你会想使用 IHostingEnvironment.Environment
(参见 documentation)属性而不是直接从 Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT")
读取(尽管前者当然是从后者设置的)。例如。在 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);
//<...>
}
//<...>
}
如果您在开发期间在运行时创建环境变量,那么您每次都会得到 null。您必须重新启动 visual studio 因为 VS 仅在启动时读取 EV。
运行 我的 ASP.NET 核心应用程序使用
set ASPNET_ENV = Production
dnx web
在 1.0 中使用相同的方法:
set ASPNETCORE_ENVIRONMENT = Production
dotnet run
不起作用 - 应用程序似乎无法读取环境变量。
Console.WriteLine(Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT"));
returns 空
我错过了什么?
您的问题是 space 大约 =
。
这会起作用(在结束引用前注意 space):
Console.WriteLine(Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT "));
这段代码中ASPNETCORE_ENVIRONMENT
后面的space不是错字!问题中的问题是有额外的 space (在 SET...),所以你必须在 GetEnvironmentVariable().
如
set ASPNETCORE_ENVIRONMENT=Production
这真的应该是对
您不想使用 'ASPNETCORE_ENVIRONMENT '
(尾随 space)- ASP.NET Core 中的某些功能取决于 'ASPNETCORE_ENVIRONMENT'
的值(没有尾随 space) - 例如解析 appsettings.Development.json
与 appsettings.Production.json
。 (例如,参见 Working with multiple environments documentation article
而且我想如果你想完全留在 ASP.NET 核心范例中,你会想使用 IHostingEnvironment.Environment
(参见 documentation)属性而不是直接从 Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT")
读取(尽管前者当然是从后者设置的)。例如。在 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);
//<...>
}
//<...>
}
如果您在开发期间在运行时创建环境变量,那么您每次都会得到 null。您必须重新启动 visual studio 因为 VS 仅在启动时读取 EV。