我正在尝试设置配置,因此很容易从开发转换为生产,而不必将配置设置从一个地方复制到另一个地方。
我要做的是设置一个包含用户名,密码和其他访问字符串的单一配置,我想从源代码管理中省略这些原因显而易见。 然后我可以在其他配置中引用这些键。
我在想什么
存储密钥的配置内容:
<keys>
<add key="username" value="1forest1" />
<add key="password" value="life-is-like-a-box-of-chocolates" />
<add key="url" value="http://www.example.com" />
</keys>
需要密钥的配置内容:
<service name="SomeService">
<settings>
<setting key="Container" value="MyContainer" />
<setting key="MaxBytes" value="12582912" />
<setting key="Timeout" value="30000" />
<setting key="Host" value=[url value from keys config] />
<setting key="username" value=[username value from keys config] />
<setting key="password" value=[password value from keys config] />
</settings>
</service>
我并不乐观地认为这可能是由于原因,但任何可能指向解决方案/解决方案的模式都会非常感激。
答案 0 :(得分:0)
查看Microsoft.Extensions.Configuration工具。添加json文件。
IConfiguration configuration = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("Secrets/values.json")
.Build();
注入配置然后获取值:
var section = configuration.GetSection("Settings");
string connectionString = section["ConnectionString"]
json示例:
{
"Settings": {
"ConnectionString": "Server=tcp.....",
"SomeOtherValue": "SomeValue"
},
"MoreStuff": {
"foo": "bar"
}
}
答案 1 :(得分:-1)
的Web.config:
<appSettings file="AppSettingsSecrets.config">
<add key="Container" value="MyContainer" />
<add key="MaxBytes" value="12582912" />
<add key="Timeout" value="30000" />
<add key="Host" value="" />
<add key="username" value="" />
<add key="password" value="" />
</appSettings>
AppSettingsSecrets.config:
<?xml version="1.0"?>
<appSettings>
<add key="Host" value="SecretHost" />
<add key="username" value="MyUname" />
<add key="password" value="S3cr3t" />
</appSettings>