1

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

  • 但我想知道我是否可以在 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>

有没有办法con_strappSettingsapp.config 中的节点读取键的值?

用户 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。

4

2 回答 2

3

只需使用这一行:

System.Configuration.ConfigurationManager.AppSettings["con_str"]
于 2013-09-09T14:14:38.440 回答
1

据我所知,无法为部分名称分配值。

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

在 Program.CS 中动态地将名称分配给值

string connectionString = ConfigurationManager
  .ConnectionStrings["connStr"].ConnectionString;
ConfigurationManager.AppSettings
  .Set("con_strOrig", connectionString);
于 2013-09-10T13:00:48.230 回答