ASP.NET で web.config に独自の設定項目をした場合、ConfigurationSection を継承したクラスを作って読み込む。

例えば以下のようなカスタム設定を追加したとする。
<configuration>
  :
  <customSettings>
    <activeDirectory path="LDAP://192.168.1.201" />
    <servers>
      <add name="server1" ipAddress="192.168.1.202" />
      <add name="server2" ipAddress="192.168.1.203" />
      <add name="server3" ipAddress="192.168.1.204" />
    </servers>
  </customSettings>
</configuration>

クラスは ConfigurationSection を継承して以下のように定義する。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Configuration;
using System.Globalization;
using System.Linq;
using System.Web;

namespace MvcApplication1.Controllers
{
	public class CustomConfigurationSection : ConfigurationSection
	{
		[ConfigurationProperty("activeDirectory")]
		public ActiveDirectoryConfigElement ActiveDirectory
		{
			get { return (ActiveDirectoryConfigElement)base["activeDirectory"]; }
			set { base["activeDirectory"] = value; }
		}

		[ConfigurationProperty("servers")]
		[ConfigurationCollection(typeof(ServerConfigElement),
								AddItemName = "add",
								ClearItemsName = "clear",
								RemoveItemName = "remove")]
		public ServerConfigCollection Servers
		{
			get { return (ServerConfigCollection)base["servers"]; }
			set { base["servers"] = value; }
		}
	}

	public class ActiveDirectoryConfigElement : ConfigurationElement
	{
		[ConfigurationProperty("path")]
		public string Path
		{
			get { return (string)base["path"]; }
			set { base["path"] = value; }
		}
	}

	public class ServerConfigElement : ConfigurationElement
	{
		[ConfigurationProperty("name", IsKey = true, IsRequired = true)]
		public string Name
		{
			get { return (string)base["name"]; }
			set { base["name"] = value; }
		}

		[ConfigurationProperty("ipAddress")]
		public string IpAddress
		{
			get { return (string)base["ipAddress"]; }
			set { base["ipAddress"] = value; }
		}
	}

	public class ServerConfigCollection : ConfigurationElementCollection
	{
		public ServerConfigElement this[int index]
		{
			get { return (ServerConfigElement)this.BaseGet(index); }
			set
			{
				if (this.BaseGet(index) != null)
				{
					this.BaseRemoveAt(index);
				}
				this.BaseAdd(index, value);
			}
		}

		protected override ConfigurationElement CreateNewElement()
		{
			return new ServerConfigElement();
		}

		protected override object GetElementKey(ConfigurationElement element)
		{
			return ((ServerConfigElement)element).Name;
		}
	}
}

その上で web.config の configSections に、タグ名とクラス定義を結びつける設定を追加しておく。
<configuration>
  <configSections>
    <section name="customSettings" type="MvcApplication1.Controllers.CustomConfigurationSection"/>
  </configSections>
  :
  <customSettings>
    <activeDirectory path="LDAP://192.168.1.201" />
    <servers>
      <add name="server1" ipaddress="192.168.1.202" />
      <add name="server2" ipaddress="192.168.1.203" />
      <add name="server3" ipaddress="192.168.1.204" />
    </servers>
  </customSettings>
</configuration>

コントローラーなどから利用する場合は以下のようにする。
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace MvcApplication1.Controllers
{
	public class HomeController : Controller
	{
		public ActionResult Index()
		{
			var config = ConfigurationManager.GetSection("customSettings") as CustomConfigurationSection;
			System.Diagnostics.Trace.WriteLine(config.ActiveDirectory.Path);
			foreach (ServerConfigElement sce in config.Servers)
			{
				System.Diagnostics.Trace.WriteLine(sce.Name + ":" + sce.IpAddress);
			}

			return View();
		}
	}
}

以上です。