在容器的核心控制台应用中获取ASPNETCORE_ENVIRONMENT

时间:2019-10-04 12:18:37

标签: asp.net-core kubernetes containers core

我有一个ASP.NET核心控制台应用程序,我在Kubernetes上的一个容器中运行。在deployment.yaml中,我设置了环境变量:

env:
   - name: "ASPNETCORE_ENVIRONMENT"
     value: "Development"

在控制台应用程序中,我具有以下代码:

static void Main(string[] args)
 {
            Console.WriteLine("Env: " + Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT"));
 }

但是ASPNETCORE_ENVIRONMENT为空,如何获取已配置的环境变量?我在核心webapi项目中使用了相同的步骤,并在其中得到如下变量:

public Startup(IHostingEnvironment env)
{
     env.EnvironmentName
}

这在核心的webapi中有效,但控制台应用程序中没有IHostingEnvironment。

2 个答案:

答案 0 :(得分:0)

我们使用此模板在我们的Kubernetes群集中运行ASP.NET Core应用程序:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  namespace: <namespace>
  name: <application name>
spec:
  replicas: 1
  minReadySeconds: 15
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 0
  template:
    metadata:
      labels:
        app: <app-label>
    spec:
      containers:
        - name: <container-name>
          image: <image-name>
          ports:
            - containerPort: 80
          env:
            - name: ASPNETCORE_ENVIRONMENT
              value: "Release"

答案 1 :(得分:0)

我已经找到了“推理”。我想阅读“静态Program()”方法中的“ ASPNETCORE_ENVIRONMENT”,那里是空的。但是,当我在“ void Main(string [] args)”方法中执行相同的操作时,它已设置并且可以正常运行。

static void Main(string[] args)
{
    string env = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT");
}