如何读取.NET 6中的环境变量?

o..*_*..o 8 .net asp.net .net-6.0

在我的 .NET Core 3.1 WebApi 项目中,我首先读取环境变量并根据它加载 appsettings.json :

public static IHostBuilder CreateHostBuilder(string[] args)
{
  string environment = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT");
  ...
}
Run Code Online (Sandbox Code Playgroud)

但我没有找到如何在.NET 6中读取它:

var builder = WebApplication.CreateBuilder(args);

build.Environment 无法读取它。
有谁知道?

谢谢

小智 13

我想稍微扩展一下已接受的答案,因为它只引用了一个链接。

还可以将环境变量读入强类型配置类。

即,看看这个类:

public class MyConfig
{
  public string ValueA { get; set; }
  public int ValueB { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我们还假设环境变量设置为MySection__ValueAMySection__ValueB

如果您将配置类注册为:

services.Configure<MyConfig>("MySection");
Run Code Online (Sandbox Code Playgroud)

然后您将能够访问代码中的配置值,如下所示:

public class SomeService
{
  public SomeService(IOptions<MyConfig> config)
  {
    // Here config.Value.ValueA is equal to MySection__ValueA
    // and config.Value.ValueB is equal to MySection__ValueB (automatically converted to int)
  }
Run Code Online (Sandbox Code Playgroud)

  • 请记住 - 每当您添加、删除、更新环境变量时,您都必须关闭并重新打开 VS。否则您的更改将不会反映在加载的配置中。这将为您省去很多麻烦;) (3认同)

小智 6

官方文档说 System 命名空间中的方法应该可以工作:

https://learn.microsoft.com/en-us/dotnet/api/system.environment.getenvironmentvariable?view=net-6.0