C# - Egyedi adatok tárolása a Web.config állományban

forráskód letöltése
Ha egy ASP.NET-es alkalmazásban több mappát is használunk, és minden egyes mappához különféle egyedi konfigurációs adatok tárolására lenne szükségünk, akkor sem kell minden mappába létrehoznunk egy-egy Web.config állományt, hanem megoldhatjuk ezt úgy is, hogy egy Web.config állományon belül megadjuk, hogy melyik mappán belül melyik konfigurációs adat legyen az érvényes.
Mellékelt példa megnyitása előtt szükséges egy Location nevű virtuális könyvtár létrehozása, mely a példa könyvtárára mutat. Ehhez nyissa meg a mellékelt mappa Tulajdonság ablakát és itt a Webmegosztás lapon engedélyezze a mappa megosztását olvasási és parancsfájlok futtatási jogával.
Ebben a példában a nyitó lap (Default.aspx) mellett található Web.config állományt módosítjuk, és létrehozunk két mappát Folder1 és Folder2 néven, melyekbe egy-egy ASPX lapot helyezünk. Ezekbe a mappákba Web.config állomány nem kerül, a szükséges konfigurációs adatokat az egyetlen Web.config állományba helyezzük úgy, hogy megadjuk azon belül a mappák neveit. Mind a két mappához egy-egy connStr nevű adatot hozunk létre.
<location path="Folder1">
    <appSettings>
      <add key="connStr" value="Data Source=Server1;Initial Catalog=Database1;User ID=sa;" />
    </ appSettings >
  </location>
  <location path="Folder2">
    <appSettings>
      <add key="connStr" value="Data Source=Server2;Initial Catalog=Database2;User ID=sa;" />
    </appSettings>
  </location>   
Amint az látható is, a Web.config állományban a location bejegyzés alatt hozhatunk létre mappához rendelt konfigurációs adatokat. Tesszük ezt úgy, hogy a path attribútumban adjuk meg, hogy az adatok mely mappához tartoznak. Ezen belül a tárolt adatok tetszőlegesek lehetnek.
Nézzük most, miként tudjuk felhasználni ezeket az adatokat. A Default.aspx lapon két nyomógombot helyezünk el, melyek segítségével az egyes mappák web oldalaira ugorhatunk.
    private void Button1_Click(object sender, System.EventArgs e)
    {
      Response.Redirect("Folder1/WebForm1.aspx");
    }
Amikor valamely mappában lévő web oldal betöltődik, akkor olvassuk ki a Web.config-ban létrehozott connStr változó értékét. Jól megfigyelhető a programban, hogy a változó értékének kiolvasásakor nem kell foglalkoznunk azzal, hogy aktuálisan melyik mappában vagyunk, tehát csak a változó nevét kell megadnunk, a többit automatikusan intézi a .NET Framework.
    private void Page_Load(object sender, System.EventArgs e)
    {
      Label1.Text=ConfigurationSettings.AppSettings["connStr"].ToString();
    }