Sho*_*nte 8 c# .net-core asp.net-core
鉴于以下程序:
public class Program
{
public static void Main(string[] args)
{
CreateWebHostBuilder(args).Build().Run();
}
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.ConfigureAppConfiguration((builderContext, config) =>
{
var env = builderContext.HostingEnvironment;
config.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true, reloadOnChange: true)
.AddEnvironmentVariables(prefix: "Prefix_");
})
.UseStartup<Startup>();
}
Run Code Online (Sandbox Code Playgroud)
和配置通常定义appsettings.json为:
{
"SomeSection": {
"SomeOption": true
}
}
Run Code Online (Sandbox Code Playgroud)
有没有办法将它覆盖为环境变量(使用文档中指定的方法)?
我试过(我在 macOS 上,但同样的问题也发生在 Linux 和 Docker Compose 中):
export Prefix_SomeSection__SomeOption=true
Run Code Online (Sandbox Code Playgroud)
但它被解析为一个字符串,它不能将其转换为布尔值。相同的方法适用于所有其他非布尔选项,这似乎暗示有一些未记录的方法将变量定义为布尔值。
我是这样设置环境变量的docker-compose.yml:
version: '3.4'
services:
server:
environment:
Prefix_SomeSection__SomeOption: true
Run Code Online (Sandbox Code Playgroud)
我得到的错误与docker-compose.yml,而不是 .NET Core 相关,它是:
包含 true,这是一个无效类型,它应该是一个字符串、数字或空值
解决方案是将其包装true成这样的字符串:
version: '3.4'
services:
server:
environment:
Prefix_SomeSection__SomeOption: "true"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5852 次 |
| 最近记录: |