C#web.config服务列表
本文关键字:服务列表 config C#web | 更新日期: 2023-09-27 18:21:31
我想在web.config文件中存储一个服务列表(服务器和服务名称)
可以有任何数字,我需要能够按照停止/启动顺序对它们进行排序
当然,我可以用多种方式做到这一点,但这是我需要一次又一次地做的事情,我正在寻找最优雅的解决方案。
那么,
最优雅的解决方案是什么(a) 在web.config中存储多个多属性元素(serviceName、serverName、order),并且
(b) 将它们分类到指定的订单中
感谢所有建议:)
创建一个自定义配置节,这允许您定义自己的配置节、元素和集合排序,以及如何管理重复条目等。
只有这些线路:
<section name="myServices" type="MyNameSpace.MyCustomConfigurationSectionHandler, MyAssembly, Version=1.0.0.0, Culture=neutral" restartOnExternalChanges="false" requirePermission="false" />
// I've placed order into the setting in case it is to be persisted or predefined
<myServices>
<add serviceName="MyFirstService" serverName="MyService" order="0" />
</myServices>
将then保存在xml文件中,并使用linq-to-xml进行查询,根据您的需求对其进行排序
通常在.config中,您的appSettings中只有键/值对。但是,如果有两个以上的项,则可以选择分隔符来拆分值字符串中的其他项。每个项都只是基于位置,您可以根据需要使用任意多个逗号分隔的值。可以为键使用任何值,并且始终可以在LINQ中进行排序。
<appSettings>
<add key="order" value="servername, ipaddress, anothervalue"/>
</appSettings>
var cfg = ConfigurationManager.AppSettings;
var servers =
from key in cfg.AllKeys
select new {
order = key,
servername = cfg[key].Split(',')[0],
ipaddress = cfg[key].Split(',')[1],
anothervalue = cfg[key].Split(',')[2]
};