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

时间:2017-07-28 00:03:30

标签: 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>

C#

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

我希望每个最喜欢的都能用分号读入 string [] _favourites 数组(我稍后会解析它)。 web.config是一个XML文件,因此我可以将其作为一个文件打开并将数据拉出来,但使用ConfigurationManager是否有更简单的方法来执行此操作?

3 个答案:

答案 0 :(得分:1)

如果您将所有数组值添加到单个键中,如< - p>,该怎么办?

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

将该键值作为字符串读取 -

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

然后将字符串拆分为','(逗号),就像这样 -

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

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

答案 1 :(得分:0)

我不知道是否有黑客攻击,但我只有一个设置有多个值;

<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会产生影响 - 这可能会导致您的应用重启。

答案 2 :(得分:0)

怎么样: 1.右键点击项目&gt;性能 2.导航到设置。如果显示,则此项目没有设置文件。单击以创建一个。 3.创建一个SystemCollections.Speciliazed.StringCollection 4.根据需要命名(我的例子是StatusReason)。在右边的行尾有......(三个)点 5.按下它们并添加所需的设置。每行一个。 样品:

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

并且在网络配置中看起来就是这样。

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

并且您有一系列设置。