【问题标题】:Why does section order matter in the app.config为什么 app.config 中的部分顺序很重要
【发布时间】:2013-06-13 03:42:34
【问题描述】:

我最近将 log4net 添加到我的应用程序中。令我感到相当奇怪的是,我必须在<startup> 标记块之前放置<configSections> 标记块。如果我不这样做,我最终会在我进行的第一个 db 调用中得到一个非常奇怪的异常。我假设这是有原因的,但这似乎很奇怪。

这是工作示例:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
  </configSections>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
  </startup>


  <log4net debug="false">
    <appender name="LogFileAppender" type="log4net.Appender.FileAppender">
      <param name="File" value="Logs\log.txt"/>
      <param name="AppendToFile" value="true"/>
      <layout type="log4net.Layout.PatternLayout">
        <!--<param name="ConversionPattern" value="%d [%t] %-5p %c [%x] &lt;%X{auth}&gt; - %m%n"/>-->
        <conversionPattern value="%date - %-5level- %message%newline" />
      </layout>
    </appender>
    <root>
      <priority value="ALL"/>
      <appender-ref ref="LogFileAppender"/>
    </root>
    <category name="testApp.LoggingExample">
      <priority value="ALL"/>
    </category>
  </log4net>

【问题讨论】:

  • 这可能发生在一般的 .NET Web 技术中,它不是 log4net 特定的。另外,“标签块前面的标签块”是没有意义的。
  • @Grant Thomas - 谢谢,我的描述中有一些标签需要标记为代码以使其可见。

标签: c# app-config


【解决方案1】:

节的顺序通常无关紧要,只有 configSections 元素必须在前。

From MSDN:

如果 configSections 元素在配置文件中,则 configSections 元素必须是 configuration 元素的第一个子元素。 p>

我认为这是因为需要先声明节才能使用它们。

【讨论】:

    猜你喜欢
    • 2013-05-18
    • 1970-01-01
    • 1970-01-01
    • 2013-11-18
    • 1970-01-01
    • 2018-02-01
    • 2017-06-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多