[原创]自定义Config例子,使用IConfigurationSectionHandler 接口
1.MasterPage
调用方法
private void GetConfig()
{
NameValueCollection channelCollection = new CooperationChannelsConfig().Settings;
foreach (String channel in channelCollection)
{
if (channel.Equals(UIHelper.GetServerName(this.Page)))
{
DomainName = channelCollection[channel].Split('|')[0].ToString();
this.Page.Title = channelCollection[channel].Split('|')[1].ToString();
break;
}
}
}
2.CooperationChannelsConfig :
//实现一个类支持IConfigurationSectionHandler 接口来对自定义节进行处理,完成对自定义节的读取
namespace Config
{
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Collections.Specialized;
using System.Xml;
public class CooperationChannelsConfig : IConfigurationSectionHandler
{
public object Create(object parent, object configContext, XmlNode section)
{
NameValueCollection settings;
try
{
NameValueSectionHandler baseHandler = new NameValueSectionHandler();
settings = (NameValueCollection)baseHandler.Create(parent, configContext, section);
}
catch
{
settings = null;
}
return settings;
}
/// <summary>
/// 返回整个Channel
/// </summary>
public NameValueCollection Settings
{
get
{
return (NameValueCollection)ConfigurationManager.GetSection("channel");
}
}
}
}
3.在项目中建立一个Global文件,在Application_Start()事件中增加一句话取得GetSection:
System.Configuration.ConfigurationManager.GetSection("channel");
4.在Web.config中配置一下mapping类和只明使用的自定义的config文件:
<section name="channel" type="Config.CooperationChannelsConfig, Config " />
<channel configSource="Config\\Channel.config"/>
5.Channel.config: 自定义的Config文件
<?xml version="1.0" encoding="gb2312"?>
<channel>
<add key="Key" value="value"/>
<add key="Key1" value="value1"/>
</channel>
调用方法
private void GetConfig()
{
NameValueCollection channelCollection = new CooperationChannelsConfig().Settings;
foreach (String channel in channelCollection)
{
if (channel.Equals(UIHelper.GetServerName(this.Page)))
{
DomainName = channelCollection[channel].Split('|')[0].ToString();
this.Page.Title = channelCollection[channel].Split('|')[1].ToString();
break;
}
}
}
2.CooperationChannelsConfig :
//实现一个类支持IConfigurationSectionHandler 接口来对自定义节进行处理,完成对自定义节的读取
namespace Config
{
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Collections.Specialized;
using System.Xml;
public class CooperationChannelsConfig : IConfigurationSectionHandler
{
public object Create(object parent, object configContext, XmlNode section)
{
NameValueCollection settings;
try
{
NameValueSectionHandler baseHandler = new NameValueSectionHandler();
settings = (NameValueCollection)baseHandler.Create(parent, configContext, section);
}
catch
{
settings = null;
}
return settings;
}
/// <summary>
/// 返回整个Channel
/// </summary>
public NameValueCollection Settings
{
get
{
return (NameValueCollection)ConfigurationManager.GetSection("channel");
}
}
}
}
3.在项目中建立一个Global文件,在Application_Start()事件中增加一句话取得GetSection:
System.Configuration.ConfigurationManager.GetSection("channel");
4.在Web.config中配置一下mapping类和只明使用的自定义的config文件:
<section name="channel" type="Config.CooperationChannelsConfig, Config " />
<channel configSource="Config\\Channel.config"/>
5.Channel.config: 自定义的Config文件
<?xml version="1.0" encoding="gb2312"?>
<channel>
<add key="Key" value="value"/>
<add key="Key1" value="value1"/>
</channel>
最后我也提供一下MSDN上面的自定义配置节的例子:
ms-help://MS.MSDNQTR.v80.chs/MS.MSDN.v80/MS.VisualStudio.v80.chs/dv_aspnetconfig/html/07f68a3f-2920-4665-a824-47bda744e662.htm