Categories: Code, Components, Snippets Posted by AlexanderZeitler on 7/8/2004 10:16 AM | Comments (0)

In der ASP.NET-Mailingliste kam die Frage auf, wie man mehrere .config-Files, wie es z.B. dasBlog tut, verwenden kann. Die Lösung liefert Daniel Fisher's custom configuration file AppSettings reader Klasse.

Die Klasse lässt sich problemlos mit dem von mir vorgestellten ApplicationSettings Wrapper verwenden - ein Beispiel für die Verwendung mit zwei .config-Files (web.config und DataAccess.config) könnte z.B. so aussehen:

using System;
using System.Configuration;
using System.Web;
using System.Web.UI;
using StaticDust.Configuration;

namespace MyApplication.Configuration
{
    /// <summary>
    /// Zusammenfassung für Configuration.
    /// </summary>
    internal class Web
    {
        public static string BaseURL
        {
            get
            {
                return LoadConfigValue("BaseURL");
            }
        }


        /// <summary>
        /// Liefert den angefordeten Keyvalue aus der
        /// web.config zurück und cached diesen, falls
        /// noch nicht gecached.
        /// </summary>
        /// <param name="nameInWebConfig">Der angefordete Keyname
        /// in der web.config</param>
        /// <returns>Der Keyvalue aus der web.config.</returns>
        private static string LoadConfigValue(string nameInWebConfig)
        {
            string nameInApplication = "ConfigWeb" + nameInWebConfig;
            HttpApplicationState app = HttpContext.Current.Application;
            if( app[nameInApplication] == null )
            {
                app[nameInApplication] =
                    ConfigurationSettings.AppSettings[nameInWebConfig];
            }
            return
                app[nameInApplication].ToString();
        }
    }

    internal class DataAccess
    {
        /// <summary>
        /// Liefert den in der web.config gespeicherten
        /// Connectionstring zurück.
        /// </summary>
        public static string ConnectionString
        {
            get
            {
                return LoadConfigValue("ConnectionString");
            }
        }

        /// <summary>
        /// Liefert den angefordeten Keyvalue aus der
        /// web.config zurück und cached diesen, falls
        /// noch nicht gecached.
        /// </summary>
        /// <param name="nameInWebConfig">Der angefordete Keyname
        /// in der web.config</param>
        /// <returns>Der Keyvalue aus der web.config.</returns>
        private static string LoadConfigValue(string nameInWebConfig)
        {
            string nameInApplication = "ConfigDataAccess" + nameInWebConfig;
            HttpApplicationState app = HttpContext.Current.Application;
            if( app[nameInApplication] == null )
            {
                app[nameInApplication] =
                    CustomConfigurationSettings.AppSettings(
                    HttpContext.Current.Server.MapPath("DataAccess.config"))[nameInWebConfig];

            }
            return
                app[nameInApplication].ToString();
        }
    }
}

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Comments are closed