我尝试使用asp.net配置支持以下面的格式读取和编写自定义部分。
<ApplicationSettings>
<LogFactory>
<LogToDataBase>True</LogToDataBase>
<LogToFile>False</LogToFile>
</LogFactory>
<PingPongModule>
<UsePerformanceCounters>True</UsePerformanceCounters>
<SaveMessagesToDatabase>True</SaveMessagesToDatabase>
</PingPongModule>
..
<AnyComponentName>
<AnyConfigName>ConfigValue</AnyConfigName>
</AnyComponentName>
</ApplicationSettings>
但根据我目前所知,我应该使用类似以下格式的东西来使用自定义配置部分支持。我熟悉解析格式。
<ApplicationSettings>
<Components>
<Component Name="LogFactory">
<ConfigElements>
<ConfigElement Key="LogToDataBase" Value="True"></ConfigElement>
</ConfigElements>
</Component>
<Component Name="PingPongModule">
<ConfigElements>
<ConfigElement Key="UsePerformanceCounters" Value="True"></ConfigElement>
<ConfigElement Key="SaveMessagesToDatabase" Value="True"> </ConfigElement>
</ConfigElements>
</Component>
..
<Component Name="AnyComponentName">
<ConfigElements>
<ConfigElement Key="AnyConfigName" Value="ConfigValue"></ConfigElement>
</ConfigElements>
</Component>
</Components>
</ApplicationSettings>
显然,它比第一种格式有更多的噪音。组件在我的应用程序中动态加载。因此&#34; AnyComponentName&#34;和&#34; AnyConfigName&#34;是变量。
我的问题是,是否可以编写自定义ConfigurationSection
..等实现来解析第一种格式?
或者换句话说,是否可以将变量用于标记名称?
如果是,您能否在c#中提供示例?
答案 0 :(得分:1)
可以使ConfigurationSection
适应(虚拟)任何格式,包括您提供的XML架构。
Here是一篇关于如何正确实现它的文章。
您需要实现三个类来阅读配置数据:ConfigurationElement
,ConfigurationElementCollection
和ConfigurationSection
。
答案 1 :(得分:1)
我可以从Nopcommerce 1.8开源项目中为您提供一个 web config 文件的简要示例,让我们看看它是否有帮助。
<configuration>
<configSections>
<section name="NopConfig" type="NopSolutions.NopCommerce.BusinessLogic.Configuration.NopConfig, Nop.BusinessLogic" requirePermission="false"/>
</configSections>
<NopConfig>
<SqlServer ConnectionStringName="NopSqlConnection"/>
<Cache Enabled="True"/>
<ScheduleTasks>
<Thread seconds="60">
<task name="ClearCache" type="NopSolutions.NopCommerce.BusinessLogic.Caching.ClearCacheTask, Nop.BusinessLogic" enabled="true" stopOnError="false"/>
<task name="KeepAlive" type="NopSolutions.NopCommerce.BusinessLogic.Utils.KeepAliveTask, Nop.BusinessLogic" enabled="true" stopOnError="false" path="keepalive/ping.ashx"/>
</Thread>
<Thread seconds="43200">
<task name="KeepFedexDelivery" type="NopSolutions.NopCommerce.BusinessLogic.Utils.KeepFedexDeliveryTask, Nop.BusinessLogic" enabled="true" stopOnError="false" path="keepalive/GetDeleiveredDate.ashx"/>
</Thread>
</ScheduleTasks>
</NopConfig>
</configuration>