打印

[asp.net教程] asp.net2.0里web.config配置的读写

asp.net2.0里web.config配置的读写

在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].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>
   
   
   
   
   
   
   
  trackback: http://tb.blog.csdn.net/trackback.aspx?postid=1487303

TOP

返回顶部
AYBlue

Processed in 0.057215 second(s), 7 queries.

当前时区 GMT+8, 现在时间是 2008-11-22 15:58 京ICP备06054220号

清除 Cookies - 联系我们 - 163K.com - Archiver - WAP