我有一个按预期工作的自定义 configSection。但是,当我添加“connectionStrings”部分时,我收到错误:
Configuration system failed to initialize
上线:
StencilObjects so = ConfigurationManager.GetSection( "stencilObjects" ) as StencilObjects;
这是配置:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<connectionStrings>
<add name="connection" connectionString="foo"/>
</connectionStrings>
<configSections>
<section name="stencilObjects" type="Stencil.Configuration.StencilObjects, Stencil.Configuration"/>
</configSections>
<stencilObjects>
<tableData>
<table schema="Auth" name="SecurityQuestion" />
</tableData>
</stencilObjects>
</configuration>
使用自定义配置部分有什么限制吗?这是否不允许使用连接字符串?
再次,当我删除连接字符串时,应用程序按预期运行。
知道发生了什么吗?
我还没有找到一个链接来通过明确的声明来支持这一点,但我总是在文件顶部使用
configSections
,没有任何问题。尝试这样:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="stencilObjects" type="Stencil.Configuration.StencilObjects, Stencil.Configuration"/>
</configSections>
<connectionStrings>
<add name="connection" connectionString="foo"/>
</connectionStrings>
<stencilObjects>
<tableData>
<table schema="Auth" name="SecurityQuestion" />
</tableData>
</stencilObjects>
</configuration>
configSections
绝对不需要需要位于其描述的部分之前。 connectionStrings
可以介于两者之间。
正如 David 在回答中所说,
configSections
部分需要位于配置文件的顶部。
这里是从 Microsoft 备份它的链接:
如果此元素位于配置文件中,则它必须是第一个子元素 元素的元素。
因此您需要切换各部分,如下所示:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="stencilObjects" type="Stencil.Configuration.StencilObjects, Stencil.Configuration"/>
</configSections>
<connectionStrings>
<add name="connection" connectionString="foo"/>
</connectionStrings>
<stencilObjects>
<tableData>
<table schema="Auth" name="SecurityQuestion" />
</tableData>
</stencilObjects>
</configuration>