2

我有一个名为 appName 的值,在存储应用程序名称的应用程序配置中定义。应用程序通过数据库跟踪侦听器将日志写入数据库。我想要做的是让应用程序获取它的 appName 值并将 defaultCategory 设置为在运行时具有相同的值。我假设我还必须将现有类别重命名为 appName 的值。除了该类别的名称和对 defaultCategory 的更改(重命名的类别)之外,我不想影响任何其他内容。

这是配置部分, TESTING 是我想在运行时更改的值:

<loggingConfiguration name="" tracingEnabled="true" defaultCategory="TESTING">

...

<categorySources>

 ...

 <add switchValue="All" name="TESTING">
  <listeners>
    <add name="Database Trace Listener" />
  </listeners>
 </add>
</categorySources> 

我已经尝试查找解决方案/示例,但最接近我发现的内容重写了整个部分,我宁愿避免这样做。

4

1 回答 1

1

企业库支持单个应用程序块的运行时编程配置或设计时声明性配置。但是开箱即用,您不能真正为同一个应用程序块轻松混合这两种方法。

您提到了一种方法,即修改配置并将其写回。

另一种方法是在运行时以编程方式设置所有配置。

如果您使用外部配置文件(例如,指向实际企业库配置的 app.config/web.config 中的 FileConfigurationSource),另一种可行的方法是加载配置信息,然后在内存中对其进行修改。使用外部配置文件的原因是为了避免在尝试修改配置信息时出现只读配置异常。

文章Enterprise Library Programmatic Configuration中介绍了最后一种方法。

于 2013-01-04T06:37:48.520 回答