app.config 从其他节点读取密钥连接字符串的值

本文关键字:连接 字符串 密钥 读取 config 其他 节点 app | 更新日期: 2023-09-27 18:30:44

在stackoverflow上有几个关于如何从代码或使用Windows路径变量获取app.config值的问题。

  • 但是我想知道我是否可以在 app.config xml 文件中使用已经定义的密钥?
  • 目的是避免多次输入连接字符串。

下面可以看到我的连接字符串"con_str":

<appSettings>
  <add key="con_str" value="myDatabaseConnectionString"/>
</appSettings>
....
<log4net>
    <appender name="AdoNetExceptionAppender" 
         type="log4net.Appender.AdoNetAppender">
      <bufferSize value="1" />
      <threshold value="FATAL"/>
      <connectionType ... />
      <connectionString 
                 value= .... <--- How to use value from 'con_str' above?
       />
      <commandText ... />
      <parameter>
        <parameterName value="@log_date" />
        <dbType value="DateTime" />
        <layout type="log4net.Layout.RawTimeStampLayout" />
      </parameter>
    </appender>
</log4net>

有没有办法从 app.config 中的appSettings节点读取键con_str的值?

用户 chadiusvt 评论后更新 1

我像这样更改了我的应用程序.config:

<appSettings>
    <add key="con_strOrig" value="foo" />   
</appSettings>
<connectionStrings>
    <add name="connStr" connectionString="foo" />   
</connectionStrings>
    ...
<log4net>
  <appender name="AdoNetExceptionAppender" 
            type="log4net.Appender.AdoNetAppender">
  <bufferSize value="1" />
  <threshold value="FATAL"/>
  <connectionType ... />
  <connectionString value="connStr"  />
  ...

正如您在上次更新中看到的那样,可以 引用connectionStrings .但是由于在我的代码中我总是使用 appSettings 我必须在很多地方更改我的代码。有没有办法让<appSettings>指向节点<connectionsStrings>connStr键?

更新 2 以解决答案

我相信你误会了。我正在寻找一种在 xml 文件中引用另一个变量的方法。

app.config 从其他节点读取密钥连接字符串的值

只需使用这一行:

System.Configuration.ConfigurationManager.AppSettings["con_str"]

据我所知,不可能为部分名称分配值。

我有一些替代解决方案来完成您的任务。

在程序中动态地为值分配名称.CS

string connectionString = ConfigurationManager
  .ConnectionStrings["connStr"].ConnectionString;
ConfigurationManager.AppSettings
  .Set("con_strOrig", connectionString);