Получить ASPNETCORE_ENVIRONMENT в основном консольном приложении в контейнере - PullRequest
1 голос
/ 04 октября 2019

У меня есть консольное приложение ASP.NET, которое я запускаю в контейнере в Kubernetes. В deploy.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 голосов
/ 07 октября 2019

Я вроде нашел причину, я думаю. Я хотел прочитать "ASPNETCORE_ENVIRONMENT в методе" static Program () ", там он был пустым. Но когда я делаю то же самое в методе" void Main (string [] args) ", он устанавливается и работает как положено.

static void Main(string[] args)
{
    string env = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT");
}
0 голосов
/ 04 октября 2019

Мы используем этот шаблон для запуска основного приложения ASP.NET в нашем кластере Kubernetes:

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"
...