2017-07-28 134 views
2

我試圖從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://stackoverflow.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

回答

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有後果 - 它可能會導致您的應用程序重新啓動。

0

如何: 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

0

如果你添加單鑰匙所有數組值一樣 -

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

閱讀鍵值爲一個字符串 -

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

,然後分割字符串「」(逗號)像這樣 -

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

這將給出數組_favouritesArr中的所有值。