Avatar billede CodingJoe Nybegynder
27. december 2010 - 15:28 Der er 8 kommentarer og
2 løsninger

Læse fra en konfigurationsfil (app.config el. web.config) programmatisk

Jeg har behov for at udlæse en værdi i noget konfiguration. Jeg benytter ikke keys, men skal sådan set helt enkelt læse en værdi i id (<component id="foo"...). Er der nogen hurtig og nem måde at gøre det på?

Det skal ske i codebehind filen dvs. i c#, jeg har på fornemmelsen, at der skal bruges noget xpath til det, men sidder lidt fast.

Har I et forslag?

Jeg skal som sagt hive værdien ud af id i <component id="MinVaerdi"...
Avatar billede aaberg Nybegynder
27. december 2010 - 15:42 #1
I din web.config, kan du under <configuration> tilføje:
<appSettings>
  <add key="component" value="foo" />
</appSettings>

Fra din kode-fil får du værdien sådan:

string componentId = System.Configuration.ConfigurationManager.AppSettings["configuration"];
Avatar billede arne_v Ekspert
27. december 2010 - 15:46 #2
Det nemmeste er at bruge keys.

Alternativt skal du kigge på en custom section.
Avatar billede CodingJoe Nybegynder
27. december 2010 - 18:26 #3
Problemet er netop at jeg ikke kan bruge appsettings med keys, det er nemlig det mest oplagte, og det jeg har været vant til at bruge. Men jeg har noget konfiguration liggende et andet sted, hvorfra jeg gerne vil læse id værdien. Custom section har jeg faktisk tænkt på, men fik det aldrig til at virke helt.

Jeg har søgt på nettet, men ikke fundet noget brugbart. Derfor skriver jeg herinde :)
Avatar billede CodingJoe Nybegynder
27. december 2010 - 19:14 #4
Det er i virkeligheden en id fra min windsor castle konfiguration, jeg forsøger at hive ud.

<castle>
<components>
<component id="MinKomponent" service="..." />
</components>
</castle>
Avatar billede arne_v Ekspert
27. december 2010 - 19:17 #5
Altså appsettings key value kan vel bruges til stort set alt, hvis man er lidt kreativ.

Så jeg forstår stadig ikke hvorfor den ikke kan bruges.

Når du når en vis kompleksitet er en custom section nok det bedste. Og det kan også bringes til at virke.
Avatar billede CodingJoe Nybegynder
27. december 2010 - 19:44 #6
Ideen er meget enkelt...jeg bruger det der allerede findes, istedet for at øge kompleksisteten yderligere med ekstra konfiguration. Jeg tror, jeg har fundet en ide...og poster så snart, jeg har fået det til at virke.
Avatar billede arne_v Ekspert
27. december 2010 - 19:49 #7
Custom config section er iøvrigt ikke så kompliceret.

Til et andet spørgsmål for et års tid siden lavede jeg dette simple eksempel.

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <configSections>
        <section name="myconfig" type="E.MyConfig,MyConfig"/>
    </configSections>
    <myconfig foo="123" bar="ABC"/>
</configuration>

using System;
using System.Configuration;

namespace E
{
    public class MyConfig : ConfigurationSection
    {
        [ConfigurationProperty("foo")]
        public int Foo { get { return (int)this["foo"]; } }
        [ConfigurationProperty("bar")]
        public string Bar { get { return (string)this["bar"]; } }
    }
    public class Program
    {
        public static void Main(string[] args)
        {
            MyConfig cfg = (MyConfig)ConfigurationManager.GetSection("myconfig");
            Console.WriteLine(cfg.Foo + " " + cfg.Bar);
        }
    }
}
Avatar billede CodingJoe Nybegynder
03. januar 2011 - 17:49 #8
Det endte med en app key...det andet var ikek værd at begive sig ned i...irriterer mig lidt...men sådan er det...
AppSetting tingen kendte jeg dog til i forvejen...men jeg vil gerne dele mine points med Jer to...da I jo ville hjælpe mig.
Avatar billede arne_v Ekspert
04. januar 2011 - 02:45 #9
ok
Avatar billede aaberg Nybegynder
04. januar 2011 - 09:49 #10
:)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester