小编sin*_*yil的帖子

ASP.NET Core 配置值有时在 Kubernetes 中返回空

我目前正在开发一个在 Kubernetes 上使用 .NET Core 2.1 运行的项目。我的应用程序从文件和环境变量中读取配置值appsettings.json

问题是当我尝试从接口读取配置时IConfiguration,“大多数时候”值返回 null,但仅限于 Kubernetes。它在我的开发机器和带有 Windows VM 和 IIS 的测试机器上完美运行。这些环境之间的区别在于开发和测试机器是 Windows,但生产是在 Linux 容器上运行的 Kubernetes(基于microsoft/dotnet:2.1-aspnetcore-runtime映像)以及我如何实现环境变量。在我的开发机器中没有定义环境变量。web.config在 Windows VM 中,我确实通过如下条目使用环境变量:

<aspNetCore processPath="dotnet" arguments="myapp.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout">
    <environmentVariables>
         <environmentVariable name="Site:SiteId" value="1" />
         <environmentVariable name="Site:Theme" value="MyTheme" />
    </environmentVariables>
</aspNetCore>
Run Code Online (Sandbox Code Playgroud)

我用于WebHost.CreateDefaultBuilder()配置和文档说方法实现了appsettings.json配置appsettings.{EnvironmentName}.json源的环境变量和命令行参数。

我的appsettings.json文件:

{
  "Site": {
    "SiteId": 1,
    "Theme": "Limitless"
  },
  "RemoteClient": {
    "HostUrl": "http://localhost:59554/management/",
    "AppKey": "test",
    "AppSecret": "1"
  }
}
Run Code Online (Sandbox Code Playgroud)

最后是我的 Kubernetes 部署文件:

apiVersion: apps/v1
kind: …
Run Code Online (Sandbox Code Playgroud)

environment-variables docker kubernetes asp.net-core

1
推荐指数
1
解决办法
1780
查看次数