由于在每个系统中都会带有这两个配置文件中的一个,所以把一些需要的配置信息放在这里里面是非常有效的,既不需要产生新的自定义配置文件,又能达到效果。

实现方式:

       C# Configuration类来读取config中的节点,但是只提供直接读取AppSetting的方法(这个是特殊方法),其它的节点只能通过GetConfig()来获取,具体方式如下:

1、  配置App.config文件

  <configSections>

      <sectionGroup name="sectionGroup1">

            <section name="Section1" type="System.Configuration.NameValueSectionHandler"/>

      </sectionGroup>

 

   </configSections>

这一部分主要是来定义即将使用的Section 节点名称,sectiontype包括以下2种:

a.      DictionarySectionHandler

b.      NameValueSectionHandler

c.       指定type的作用是指定从配置文件中读取节的配置节处理程序类的名称。

Sectiongroup 定义一个配置节的命名空间,section元素则是配置节声明。

2、  添加如下的自定义节点:

<sectionGroup1>

 

<Section1>

        <add key="param1" value = "7"/>

</Section1> 

 

  </sectionGroup1>

 

3、  读取方式:

NameValueCollection config = (NameValueCollection)ConfigurationSettings.GetConfig("sectionGroup1/Section1");
return config[param1];

在ASP.NET 2.0中,提供了更方便的配置文件访问的类,具体可以到 System.Configuration 名称空间下进行查看。本文提供一种在开发过程中常用的得到数据库字符串的方法,为方便使用,写成一个方法进行调用:

以下是引用片段:
  public string GetConnectionString( string _connectionStringsName )
  {
  System.Configuration.ConnectionStringSettingsCollection config = System.Configuration.ConfigurationManager.ConnectionStrings;
  for (int i = 0 ; i < config.Count ; i++)
  {
  if (config[i].Name.Equals(_connectionStringsName, StringComparison.OrdinalIgnoreCase))
  return config[i].ToString();
  }
  return String.Empty;
  }

  如果web.config配置如下:

以下是引用片段:
<connectionStrings> 
<add name="ConnectionString1" connectionString="Persist Security Info=False;User ID=sa;Password=;Initial Catalog=DataBase1;Server=(local);" providerName="System.Data.SqlClient"/> 
<add name="ConnectionString2" connectionString="Persist Security Info=False;User ID=sa;Password=;Initial Catalog=DataBase2;Server=(local);" providerName="System.Data.SqlClient"/> 
</connectionStrings>

  如果写成静态类方法,则可以使用下面的方法进行调用:

  

以下是引用片段:
string ConnectString = XianhuiMengUtil.GetConnectionString("ConnectionString1");

  另外,如果在遍历时进行输出,则可以看到多出来一个配置项,那是因为machine.config里已经默认定义理一个数据库连接,内容如下:

以下是引用片段:
<connectionStrings> 
<add name="LocalSqlServer" connectionString="data source=.SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename= DataDirectory aspnetdb.mdf;User Instance=true" providerName="System.Data.SqlClient" /> 
</connectionStrings> 

  这就是许多网友在论坛上经常会问:为什么我的程序会调用 SQLEXPRESS 数据库的原因,如果你的数据库配置不正确,或者无法打开时,就会使用 SQLEXPRESS 数据库。

http://www.cnblogs.com/oec2003/archive/2007/06/06/773441.html 

       该函数必须包含于System.Configuration 名称空间下。

 

4、  注意事项:

a.      appSettings节点必须放在自定义节点后,这个具体原因还不知道。

b.      sectiongroup可以相互嵌套,但必须保证唯一性
http://www.cnblogs.com/rickel/archive/2005/04/22/143462.html

posted on 2007-06-30 22:36  mbskys  阅读(713)  评论(0)    收藏  举报