C# 如何在web.config中将项目读入数组

C# 如何在web.config中将项目读入数组,c#,asp.net,iis,web-config,C#,Asp.net,Iis,Web Config,我正在尝试从web.config文件(在IIS中)中的项构建字符串数组 web.config <appSettings> <add key="favourite" value="url1; site1" /> <add key="favourite" value="url2; site2" /> <add key="favourite" value="url3; site3" /> </appSettings>

我正在尝试从web.config文件(在IIS中)中的项构建字符串数组

web.config

<appSettings>
    <add key="favourite" value="url1; site1" />
    <add key="favourite" value="url2; site2" />
    <add key="favourite" value="url3; site3" />
</appSettings>

我希望每个favorite都能用分号读入string[]\u favorites数组(稍后我会解析出来)。web.config是一个XML文件,因此我可以将其作为一个文件打开并提取数据,但有没有更简单的方法使用ConfigurationManager来实现这一点?

我不知道是否有黑客可以做到这一点,但我只需要一个设置和多个值

<appSettings>
    <add key="favourite" value="url1;site1;url2;site2;url3;site3;" />
</appSettings>


另一种解决方案是使用单独的配置文件或将其存储在数据库中

我想收藏夹可能会更改,更改
web.config
会产生后果-它可能会导致您的应用程序重新启动。

怎么样: 1.右键单击项目>属性 2.导航到“设置”。如果显示,则此项目没有设置文件。单击以创建一个。 3.创建SystemCollections.Specialized.StringCollection 4.根据需要命名(我的示例StatusReason)。在e右边的线的末尾有…(三)个点 5.按它们并添加所需的设置。每行一个。 样本:

在web配置中,它看起来是这样的

<applicationSettings>
<WebApplication.BookServices>
     <setting name="StatusReason" serializeAs="Xml">
            <value>
              <ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                xmlns:xsd="http://www.w3.org/2001/XMLSchema">
                              <string>Valid=979580000</string>
                <string>Invalid=979580001</string>
                <string>Broken=979580002</string>
                <string>ReadyForCollect=979580003</string>
                <string>Missing=979580004</string>
                <string>Refine=979580005</string>
              </ArrayOfString>
            </value>
          </setting>
</WebApplication.BookServices>
</applicationSettings>
将项目引用添加到属性:

using WebApplication.BookServices.Properties;

这里有一个设置数组。

如果在单个键中添加所有数组值,如-

<appSettings>
    <add key="favourite" value="url1;site1,url2;site2,url3;site3" />
</appSettings>
然后用“,”(逗号)像这样分割字符串-

string[ ] _favouritesArr = _favourites.Split(',');

这将给出数组中的所有值_favoritesar.

Duplicate?-请参阅:
ConfigurationManager。Appsettings
将仅返回密钥的最后一个值。我在这里找到了一个解决方法,但我还没有测试过。不,那不是我要找的。把所有这些放在字符串[]电子邮件中。重复键有意义吗?添加分隔符“;”对不起,我的榜样不适合你的直接需要。我的分隔符是“=”,并将它们添加到dictionary
var settings=settings.Default.StatusReason;Dictionary statusReason=新建字典();foreach(设置中的变量集){string[]words=set.Split('=');statusReason.Add(words[1],words[0]);}
var settings = Settings.Default.StatusReason;
//TODO add any logic, if needed to split
using WebApplication.BookServices.Properties;
<appSettings>
    <add key="favourite" value="url1;site1,url2;site2,url3;site3" />
</appSettings>
public string _favourites = ConfigurationManager.AppSettings["favourite"];
string[ ] _favouritesArr = _favourites.Split(',');