2017-07-28 1 views
2

J'essaie de créer un tableau de chaînes à partir d'éléments dans un fichier web.config (dans IIS).Comment lire des éléments dans des tableaux dans 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"]; 

Je voudrais chaque préféré à lire dans string [] _favourites de tableau avec le point-virgule (Je voudrais analyser cela plus tard). web.config est un fichier XML, donc je peux l'ouvrir et retirer les données, mais y a-t-il un moyen plus simple de le faire en utilisant ConfigurationManager?

+0

Dupliquer? - S'il vous plaît voir: https://stackoverflow.com/questions/11728491/add-array-to-key-in-web-config –

+0

'ConfigurationManager.Appsettings' ne vous retournera que la dernière valeur de la clé. J'ai trouvé une solution de contournement ici, mais je ne l'ai pas testé. https://www.codeproject.com/Articles/4302/Comment-make-AppSettings-work-with-multiple-values ​​ – Norsk

+0

Non, ce n'est pas ce que je cherche. Mettez tout cela dans string [] emails. – UltraJ

Répondre

0

Je ne sais pas s'il y a un hack pour le faire, mais je voudrais juste avoir un paramètre avec plusieurs valeurs;

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

ou

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

Une autre solution est un fichier de configuration séparé ou le stocker dans une base de données.

J'imagine que les favoris changeraient et changer web.config a des conséquences - cela pourrait entraîner le redémarrage de votre application.

0

Comment: 1.Cliquez droit sur le projet> propriétés 2.Navigate to settings. Si cela s'affiche, ce projet n'a pas de fichier de paramètres. cliquez pour en créer un. 3.Créer un SystemCollections.Speciliazed.StringCollection 4. Nommez-le, comme vous le souhaitez (mon exemple StatusReason). et en fin de ligne sur e droite, il y a ... (trois) points 5.Appuyez sur les boutons et ajoutez autant de réglages nécessaires. Un par ligne. Exemple:

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

et web config il ressemble à ça.

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

et obtenir votre tableau de chaînes:

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

ajoutez votre référence de projet aux propriétés:

using WebApplication.BookServices.Properties; 

et là, vous avez un ensemble de paramètres.

+0

Ajoutez votre délimiteur ';' Désolé, je n'ai pas adapté mon exemple à vos besoins directs. Mon délimiteur était '=' et les ajoutant au dictionnaire 'var settings = Settings.Default.StatusReason; Dictionnaire statusReason = new Dictionnaire (); foreach (var défini dans les paramètres) { string [] words = set.Split ('='); statusReason.Add (mots [1], mots [0]); } ' – raichiks

0

si vous ajoutez toutes les valeurs de tableau dans la clé unique comme -

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

Lire cette valeur clé comme une chaîne -

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

puis diviser la chaîne par « » (virgule) comme celui-ci -

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

cela donnera toutes les valeurs de tableau _favouritesArr.