如何在web.config中将数组读入数组

问题描述:

我试图从web.config文件(在IIS中)中的项目构建字符串数组。如何在web.config中将数组读入数组

的web.config

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

C#

// Reads first favourite into string. 
public string _favourites = ConfigurationManager.AppSettings ["favourite"]; 

我希望每个喜爱读入串[] _favourites阵列与分号(我会在稍后解析)。 web.config是一个XML文件,所以我可以打开它并将数据拉出,但有没有更简单的方法来使用ConfigurationManager来完成此操作?

+0

重复? - 请参阅:https://*.com/questions/11728491/add-array-to-key-in-web-config –

+0

'ConfigurationManager.Appsettings'只会返回密钥的最后一个值。我在这里找到了一个解决方法,但是我没有对它进行测试。 https://www.codeproject.com/Articles/4302/How-to-make-AppSettings-work-with-multiple-values – Norsk

+0

不,这不是我要找的。 把所有的字符串[]电子邮件。 – UltraJ

我不知道是否有黑客做到这一点,但我只会有一个设置与多个值;

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

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

另一种解决方案是单独的配置文件或存储此在数据库中。

我想象最喜欢会改变,并且改变web.config有后果 - 它可能会导致您的应用程序重新启动。

如何: 1.右键点击项目>属性 2.导航到设置。如果显示,该项目没有设置文件。点击创建一个。 3.创建一个SystemCollections.Speciliazed.StringCollection 4.根据需要命名它(我的示例StatusReason)。并在e行右边有...(三个)点 5.按下它们并添加所需的设置。每行一个。 示例:

Valid=979580000 
Invalid=979580001 
Broken=979580002 
ReadyForCollect=979580003 
Missing=979580004 
Refine=979580005 

并在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> 

,让你的字符串数组:

var settings = Settings.Default.StatusReason; 
//TODO add any logic, if needed to split 

您的项目引用添加到属性:

using WebApplication.BookServices.Properties; 

有你有设置一个数组。

+0

添加分隔符';'对不起,我不适合你的直接需求。我的分隔符是'='并将它们添加到字典'var settings = Settings.Default.StatusReason; Dictionary statusReason = new Dictionary (); foreach(var设置中设置) { string [] words = set.Split('='); statusReason.Add(words [1],words [0]); }' – raichiks

如果你添加单钥匙所有数组值一样 -

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

阅读键值为一个字符串 -

public string _favourites = ConfigurationManager.AppSettings["favourite"]; 

,然后分割字符串“”(逗号)像这样 -

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

这将给出数组_favouritesArr中的所有值。