我正在尝试在C#.NET控制台应用程序的app.config文件中创建自定义配置部分。这是存储一些服务器的一些细节,如:
<configSections>
<sectionGroup name="serverGroup">
<section name="server" type="RPInstaller.ServerConfig" allowLocation="true" allowDefinition="Everywhere"/>
</sectionGroup>
</configSections>
<serverGroup>
<server>
<name>rmso2srvm</name>
<isBatchServer>false</isBatchServer>
</server>
<server>
<name>rmsb2srvm</name>
<isBatchServer>true</isBatchServer>
</server>
</serverGroup>
我有一个为服务器部分定义的类,如下所示:
namespace RPInstaller
{
public class ServerConfig : ConfigurationSection
{
[ConfigurationProperty("name", IsRequired=true)]
public string Name {...}
[ConfigurationProperty("isBatchServer", IsRequired = true)]
public bool IsBatchServer {...}
}
}
当我现在尝试加载服务器部分时,我得到一个例外:“每个配置文件只能出现一次”。
我如何在app.config文件中合法定义多个服务器部分?
答案 0 :(得分:2)
<confgisections>
<section name="server" type="RPInstaller.ServerConfig" allowLocation="true" allowDefinition="Everywhere"/>
</confgisections>
<server>
<servers>
</clear>
<add name="rmso2srvm" isBatchServer="false"/>
<add name="rmsb2srvm" isBatchServer="true"/>
</servers>
</server>
我之前是如何设置自定义部分的
VB代码访问:
Dim cfg As ServerSection = (ConfigurationManager.GetSection("Server"),ServerSection)
cfg.ServersCollection("nameOfServer").isBatchServer
答案 1 :(得分:0)
您无法在一个web.config中创建多个服务器部分。 自定义部分中只有多个元素。 检查你的web.config - 似乎错误的原因不是因为你的代码。
更新: 您没有为“server”元素定义元素 - 仅用于ConfigurationSection。 所以运行时等待部分 rmso2srvm 假
您应该添加ServerElement : ConfigurationElement
类,并将其添加到节类的定义中:
namespace RPInstaller
{
public class ServerConfig : ConfigurationSection
{
public class ServerElement : ConfigurationElement
{
[ConfigurationProperty("name", IsRequired=true)]
public string Name {...}
[ConfigurationProperty("isBatchServer", IsRequired = true)]
public bool IsBatchServer {...}
}
}
}