Config从另一个配置中读取值

时间:2018-01-10 13:54:44

标签: c# asp.net-mvc

我正在尝试设置配置,因此很容易从开发转换为生产,而不必将配置设置从一个地方复制到另一个地方。

我要做的是设置一个包含用户名,密码和其他访问字符串的单一配置,我想从源代码管理中省略这些原因显而易见。 然后我可以在其他配置中引用这些键。

我在想什么

存储密钥的配置内容:

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

我并不乐观地认为这可能是由于原因,但任何可能指向解决方案/解决方案的模式都会非常感激。

2 个答案:

答案 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)

  1. 有一个appsettings文件:
  2. 的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>
    
    1. 将第二个配置文件的位置/名称作为第一个配置文件中的一个设置,并动态读取。