为什么在app.config中,section顺序很重要?
本文关键字:顺序 section app config 为什么 | 更新日期: 2023-09-27 18:18:19
我最近在我的应用程序中添加了log4net。让我感到奇怪的是,我必须把<configSections>
标签块放在<startup>
标签块之前。如果我不这样做,我就会在第一次调用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] <%X{auth}> - %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>
section的顺序一般来说并不重要,只有configSections元素必须放在第一位。
从MSDN:如果configSections元素在配置文件中,configSections元素必须是configuration元素的第一个子元素。
我想这是因为section在使用之前需要声明。