在不同的 appsettings.json 文件中使用不同的 Kestrel 设置

问题描述 投票:0回答:1

我正在 .NET 6 中开发一个 Windows 服务。该服务托管一个 Web API。

在 UAT 和 PROD 环境中,此 Web API 将使用 HTTPS 公开。在我的计算机上,它将使用 HTTP 公开。

我正在使用 XL Deploy 在 UAT 和 PROD 中部署我的应用程序。 XL Deploy 在部署时正在替换我的

appsettings
文件中的令牌。

这里是

appsettings.json
文件中的 Kestrel 部分:

"Kestrel": {
    "Endpoints": {
        "HttpsInlineCertStore": {
            "Url": "{{API_URL}}",
            "Certificate": {
                "Subject": "{{CERTIFICATE_SUBJECT}}",
                "Store": "My",
                "Location": "LocalMachine",
                "AllowInvalid": "false"
            }
        }
    }
},

这里是

appsettings.Local.json
文件中的 Kestrel 部分:

"Kestrel": {
    "Endpoints": {
        "Http": {
            "Url": http://localhost:9200
        }
   }
},

当我在本地运行此应用程序时,出现错误:

无效网址:“{API_URL}”
System.FormatException:无效的网址:“{{API_URL}}”

当我在我的

program.cs
中观看配置实例时,我看到:

app.Configuration

我们可以看到配置正在

appsettings.json
文件中寻找 Kestrel。

我不明白为什么。我预计 Kestrel 部分会被完全覆盖。

我有另一个非常相似的 Windows 服务,以同样的方式托管 Web API,但我没有这个问题。

我对配置文件覆盖的工作原理有疑问吗?如果是这样,如何在一种情况下获取 Http 节点,在另一种情况下获取

HttpsInLineCertStore
节点?

任何帮助将不胜感激

谢谢

c# appsettings kestrel-http-server
1个回答
0
投票

您缺少

""
网址。修改一下再测试一下。

  "Kestrel": {
    "Endpoints": {
      "Http": {
        "Url": "http://localhost:9200"
      }
    }
  }
© www.soinside.com 2019 - 2024. All rights reserved.