C#web.config服务列表

本文关键字:服务列表 config C#web | 更新日期: 2023-09-27 18:21:31

我想在web.config文件中存储一个服务列表(服务器和服务名称)
可以有任何数字,我需要能够按照停止/启动顺序对它们进行排序

当然,我可以用多种方式做到这一点,但这是我需要一次又一次地做的事情,我正在寻找最优雅的解决方案。

那么,
最优雅的解决方案是什么(a) 在web.config中存储多个多属性元素(serviceName、serverName、order),并且
(b) 将它们分类到指定的订单中

感谢所有建议:)

C#web.config服务列表

创建一个自定义配置节,这允许您定义自己的配置节、元素和集合排序,以及如何管理重复条目等。

只有这些线路:

<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]
            };