龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > asp.net编程 >

ASP.NET2.0里web.config配置的读写操作

时间:2009-12-21 11:47来源:未知 作者:admin 点击:
分享到:
在ASP.NET2.0里不但进一步扩展了配置文件web.config,更为重要的是系统提供了一组API函数,让我们可以以编程的方式从配置文件里提取信息 首先,先看看如果从web.config里提取appSettings里的
  在ASP.NET2.0里不但进一步扩展了配置文件web.config,更为重要的是系统提供了一组API函数,让我们可以以编程的方式从配置文件里提取信息 
  首先,先看看如果从web.config里提取appSettings里的配置值,示例代码如下: 
  利用ASP.NET2.0提供的一组API函数,您可以很容易的获取AppSettingsSection里所有的Keys/value组对,如下: 
  Configuration config  = WebConfigurationManager.OpenWebConfiguration(Request.ApplicationPath);    
  AppSettingsSection appSettings = (AppSettingsSection) config.GetSection("appSettings"); 
  string[] appKeys = appSettings.Settings.AllKeys; 
  for (int i = 0; i < appSettings.Settings.Count; i++)
  
  ...{
  
  //这里只进行简单的输出
  
  Response.Write(appSettings.Settings[appKeys[i]].Value);
  
  Response.Write("<BR>");
  
  } 
  上面代码只是进行简单的输出所有Key的value值,然而,你可能想获取的仅仅是某一个key的值,这也非常简单,如下: 
  Configuration config = WebConfigurationManager.OpenWebConfiguration(Request.ApplicationPath); 
  AppSettingsSection appSettings = (AppSettingsSection)config.GetSection("appSettings"); 
  string pateTitle= appSettings.Settings["pagetitle"].Value; //获取key为patetitle的value值  
  string siteLogo= appSettings.Settings["siteLogo"].Value; //获取key为sitelogo的value值 
  对于数据库连接字符串,在ASP.NET2.0里提供了专门的配置节如下:   
  <connectionStrings> 
   <add name="connectionstring" 
  connectionString="Data Source=SQLEXPRESS;AttachDbFilename=JsskDb.mdf; … .."/> 
  <add name="MyProviderConnectionString" 
  connectionString="Data Source=SQLEXPRESS;Integrated Security=True; … …"/> 
  </connectionStrings>    
  这样我们很容易获取数据库连接字符串如下: 
  Configuration config = WebConfigurationManager.OpenWebConfiguration(Request.ApplicationPath);
  
   ConnectionStringsSection conSection = (ConnectionStringsSection)config.GetSection("connectionstring "); 
  ConnectionStringSettingsCollection conCollection = conSection.ConnectionStrings; 
  foreach (ConnectionStringSettings conSetting in conCollection)
  ...{
  
  Response.Write(conSetting.ConnectionString);
  
  Response.Write("<BR>");
  
  }    
  另外,利用API函数,你同时还可以在代码里更改web.config数据库连接的配置的值,如下 
  Configuration config = WebConfigurationManager.OpenWebConfiguration(Request.ApplicationPath); 
  ConnectionStringsSection conSection = (ConnectionStringsSection)config.GetSection("connectionStrings"); 
  conSection.ConnectionStrings["SQLConnectionString"].ConnectionString = 
  "Data Source=SQLEXPRESS;Integrated Security=True; … …"; 
  config.Save();    
  这里最有意思的可能就是类的转换,在<appSettings ></appSettings>里,使用的是AppSettingsSection类,在<connectionStrings></ connectionStrings>里使用的的是ConnectionStringsSection类,事实上,ASP.NET2.0提供的一组函数都是“配置节名+Section”的形式提供的类。 
   在ASP.NET官方网站曾经对此专门介绍,可以找不到该文件了。 
  在ASP.NET2.0里提供了两种方式对数据库连接字符串加密,一种是使用asp_regii命令,一种是通过代码,下面显示的是通过代码方式对数据库连接字符串加密,代码如下:   
  Configuration config = WebConfigurationManager.OpenWebConfiguration(Request.ApplicationPath); 
  ConfigurationSection configSection = config.GetSection("connectionStrings"); 
  if (configSection.SectionInformation.IsProtected)
  
  ...{//如果已经加密,就不用再加密了
  
  configSection.SectionInformation.UnprotectSection();
  
  config.Save(); 
    
  }
  
  else
  
  ...{
  
  configSection.SectionInformation.ProtectSection ("DataProtectionConfigurationProvider");
  
  config.Save();
  
  } 
   
  这样,你检查该文件的配置可能如下:    
  <connectionStrings configProtectionProvider="DataProtectionConfigurationProvider">
  
  <EncryptedData>
  
  <CipherData>
  
  <CipherValue>AQAAANCMnd8BFdERjHoAwE/Cl+sBAAAAVClqG40BZkCjK40
  
  adynN8gQAAAACAAAAAAADZgAAqAAAABAAAABIhtOW …PE
  
  </CipherData>
  
  </EncryptedData>
  
  </connectionStrings>  
   
    做人要厚道,请注明转自酷网动力(www.ASPCOOL.COM)。
精彩图集

赞助商链接