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

时间:2013-09-09 13:22:05

标签: c# .net winforms app-config

关于stackoverflow,有关get app.config values from codeusing windows path variables的方式的几个问题。

  • 但我想知道我是否可以在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中的con_str节点读取密钥appSettings的值?

在用户chadiusvt

发表评论后更新1

我改变了我的app.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>指向节点connStr中的<connectionsStrings>密钥?

更新2以解答答案

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

2 个答案:

答案 0 :(得分:3)

只需使用此行:

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

答案 1 :(得分:1)

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

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

在Program.CS

中动态地将名称分配给值
string connectionString = ConfigurationManager
  .ConnectionStrings["connStr"].ConnectionString;
ConfigurationManager.AppSettings
  .Set("con_strOrig", connectionString);