我有一个实用程序应用程序,允许用户从各种数据库导入/导出数据。通过在app.config中添加一个自定义配置部分来添加每个新任务,如下所示。随着时间的流逝,app.config文件变得非常大,并且为了使事情变得简单,我希望用户能够在单独的文件中添加新任务。我已经阅读了一些选项,其中可以通过指定appSettings
属性将connectionString
或configSource
设置移动到其他配置文件。可以对自定义部分执行相同的操作吗?
我在内部用于任务配置的自定义部分示例。
<configSections>
<sectionGroup name="tasks">
<sectionGroup name="ImportData">
<section name="transferType" type="System.Configuration.NameValueSectionHandler"/>
<section name="srcConnectionString" type="System.Configuration.NameValueSectionHandler"/>
<section name="srcProcedure" type="System.Configuration.NameValueSectionHandler"/>
<section name="destConnectionString" type="System.Configuration.NameValueSectionHandler"/>
<section name="destTable" type="System.Configuration.NameValueSectionHandler"/>
</sectionGroup>
</sectionGroup>
</configSections>
<tasks>
<ImportData>
<transferType>
<add key="transferType" value="database" />
</transferType>
<srcConnectionString>
<add key="srcConnectionString" value="sourceDB" />
</srcConnectionString>
<srcProcedure>
<add key="srcProcedure" value="sourceProcedureName" />
</srcProcedure>
<destConnectionString>
<add key="destConnectionString" value="destConnection" />
</destConnectionString>
<destTable>
<add key="destTable" value="TableName" />
</destTable>
</ImportData>
</tasks>
部分值的读取方式类似
NameValueCollection transferSection = (NameValueCollection)ConfigurationManager.GetSection("ImportData/transferType");
如何在单独的文件中添加新部分,并且仍然能够以相同的方式阅读。
答案 0 :(得分:1)
根据.NET的documentation,这是不可行的。
一种替代方法是重组您的web.config:
<configSections>
<sectionGroup name="tasks">
<section name="import" />
<section name="export" />
</sectionGroup>
</configSections>
<tasks>
<import configSource="import.config" />
<export configSource="export.config" />
</tasks>
然后您可以在这些外部文件中添加自定义导入/导出任务。