[转]如何处理ASP.NET 2.0配置文件

第二版ASP.NET包含许多处理配置文件方面的改进。配置文件涉及一系列ASP.NET设置,同时方便了定制数据元素的使用。

虽然使用ASP.NET 1.1恢复数据值并非难事,但2.0中包含的改进使这一操作更加方便,并且增加了更多特性。下面我将说明如何访问存储在web.config文件中的数据值。

新方法

ASP.NET 2.0推出大量改进,改善了在配置文件中存储和恢复数据元素的方式。这些改进包含在web.config文件的几个新配置区域中,同时为加密和解密存储在配置文件中的数据值提供一个简便的方法。

能够以编程的方式开发和管理配置数据,从而有时不必手工编辑隐藏XML,是ASP.NET 2.0的一项主要改进。配置API提供这项功能。它还包括一组与配置文件交互的类。

基本类

配置API的基本类为Configuration类。这个类呈现应用于一个特殊物理视图(如一台计算机)或一个逻辑实体(如一个应用程序或网站)的配置设置的合并视图。如果没有配置文件,则Configuration类使用machine.config文件中定义的默认设置。

Configuration类有两个方法,可按区域名访问配置文件中的数据:GetSection和GetSectionGroup。(MSDN提供一个区域名列表。)

  • GetSection:按名称恢复一个配置区域。它返回指定的ConfigurationSection对象。
  • GetSectionGroup:为指定的路径恢复一个ConfigurationSectionGroup对象。

这两个方法允许你用XPath给配置文件中的区域指定路径。例如,下面的XPath表达式返回一个web.config文件的验证区域。

system.web/authentication

运行ASP.NET应用程序时则使用WebConfigurationManager类。它包括开放式的方法,返回Configuration类的一个实例,Configuration类提供处理文件的方法和属性。

WebConfigurationManager

应用Web应用程序时,WebConfigurationManager类提供访问配置文件的功能。这个类包含在System.Web.Configuration命名空间中。这个类中包括许多与可能出现在配置文件中的预先定义的区域相对应的类。列表A中是一个ASP.NET项目的基本web.config文件。

None.gif <? xml version="1.0" ?>
None.gif
None.gif
< configuration >
None.gif
None.gif
< appSettings >
None.gif
None.gif
< add  key ="site"  value ="TechRepublic.com" />
None.gif
None.gif
</ appSettings >
None.gif
None.gif
< connectionStrings >
None.gif
None.gif
< add  name ="db"  connectionString ="connection details" />
None.gif
None.gif
</ connectionStrings >
None.gif
None.gif
< system .web >
None.gif
None.gif
< compilation  debug ="false"   />
None.gif
None.gif
< authentication  mode ="Windows"   />
None.gif
None.gif
< authorization >
None.gif
None.gif
< allow  users ="tester" />
None.gif
None.gif
</ authorization >
None.gif
None.gif
< customErrors  mode ="RemoteOnly"  defaultRedirect ="GenericErrorPage.htm" >
None.gif
None.gif
< error  statusCode ="403"  redirect ="NoAccess.htm"   />
None.gif
None.gif
< error  statusCode ="404"  redirect ="FileNotFound.htm"   />
None.gif
None.gif
</ customErrors >
None.gif
None.gif
</ system.web >
None.gif
None.gif
</ configuration >
None.gif

该文件包含以下标准区域:appSettings、connectionStrings、compilation、authentication和custiomErrors。WebConfigurationManager类中含有将这些区域作为对象处理的方法。下表是这个列表的一个子集。你可以在System.Web.Configuration命名空间找到一个更加详细的综合列表。

  • CustiomErrorsSection:访问web.config中定义错误处理的Custom Errors区域。
  • AuthenticationSection:允许你定义应用程序如何处理用户验证。
  • AuthorizationSection:允许和拒绝用户或群体访问。

列表B中的C#代码访问这些区域并显示每个区域的值。

ExpandedBlockStart.gif ContractedBlock.gif <% dot.gif @ Page Language="C#"  %>
None.gif
ExpandedBlockStart.gifContractedBlock.gif
<% dot.gif @ Import Namespace="System.Web.Configuration"  %>
None.gif
None.gif
<! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" >
None.gif
ExpandedBlockStart.gifContractedBlock.gif
< script  runat ="server" > dot.gif
InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gifprotected 
void Page_Load(object sender, EventArgs e) dot.gif{
InBlock.gif
InBlock.gifAuthenticationSection asec;
InBlock.gif
InBlock.gifAuthorizationSection auth;
InBlock.gif
InBlock.gifCustomErrorsSection cerr;
InBlock.gif
InBlock.gifasec 
= (AuthenticationSection) WebConfigurationManager.GetSection("system.web/authentication");
InBlock.gif
InBlock.gifauth 
= (AuthorizationSection) WebConfigurationManager.GetSection("system.web/authorization");
InBlock.gif
InBlock.gifcerr 
= WebConfigurationManager.GetSection("system.web/customErrors") as CustomErrorsSection;
InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif
if (asec != nulldot.gif{
InBlock.gif
InBlock.gifResponse.Write(
"<br>Authentication Mode: " + asec.Mode.ToString());
InBlock.gif
ExpandedSubBlockEnd.gif}

InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif
if (auth != nulldot.gif{
InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif
for (int i = 0; i < (auth.Rules.Count - 1); i++dot.gif{
InBlock.gif
InBlock.gifResponse.Write(
"<br>Customer Errors mode: " + auth.Rules[i].Action.ToString() + " - " + auth.Rules[i].Users.ToString());
InBlock.gif
ExpandedSubBlockEnd.gif}
 }

InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif
if (cerr != nulldot.gif{
InBlock.gif
InBlock.gifResponse.Write(
"<br>Customer Errors mode: " + cerr.Mode.ToString());
InBlock.gif
ExpandedSubBlockEnd.gif}
 }

ExpandedBlockEnd.gif
None.gif
</ script >
None.gif
None.gif
< html  xmlns ="http://www.w3.org/1999/xhtml" >
None.gif
None.gif
< head  runat ="server" >
None.gif
None.gif
< title > Configuration Class </ title >
None.gif
None.gif
</ head >< body ></ body ></ html >
None.gif

你还可以访问ASP.NET 2.0中新增的connectionString区域和appSettings区域,后者允许你存储一个定制数据元素。列表C中的ASP.NET页面(用C#编写)访问这些区域,并使用几种途径。它用它的类(connectionStringSection)或直接使用配置文件列表中连接字符串的索引值访问connectionString。

ExpandedBlockStart.gif ContractedBlock.gif <% dot.gif @ Page Language="C#"  %>
None.gif
ExpandedBlockStart.gifContractedBlock.gif
<% dot.gif @ Import Namespace="System.Web.Configuration"  %>
None.gif
None.gif
<! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" >
None.gif
ExpandedBlockStart.gifContractedBlock.gif
< script  runat ="server" > dot.gif
InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gifprotected 
void Page_Load(object sender, EventArgs e) dot.gif{
InBlock.gif
InBlock.gifConnectionStringsSection connectionStringsSection 
= WebConfigurationManager.GetSection("connectionStrings") as ConnectionStringsSection;
InBlock.gif
InBlock.gifstring connString 
= WebConfigurationManager.ConnectionStrings["db"].ToString();
InBlock.gif
InBlock.gifstring dvalue 
= WebConfigurationManager.AppSettings["site"].ToString();
InBlock.gif
InBlock.gifResponse.Write(
"<br />Connection String: " + connectionStringsSection.ConnectionStrings[1].ToString());
InBlock.gif
InBlock.gifResponse.Write(
"<br />Connection String: " + connString);
InBlock.gif
InBlock.gifResponse.Write(
"<br />Site value: " + dvalue);
InBlock.gif
ExpandedSubBlockEnd.gif}

ExpandedBlockEnd.gif
None.gif
</ script >
None.gif
None.gif
< html  xmlns ="http://www.w3.org/1999/xhtml"   >
None.gif
None.gif
< head  runat ="server" >
None.gif
None.gif
< title > Configuration Class </ title >
None.gif
None.gif
</ head >< body ></ body ></ html >
None.gif
None.gif

你还能够以集合的方式访问区域和它们的值。列表D中的C#代码片段说明如何遍历connectioString区域中的所有值。

None.gif ConnectionStringsSection cStringsSection  =  WebConfigurationManager.GetSection( " connectionStrings " as  ConnectionStringsSection;
None.gif
None.gifConnectionStringSettingsCollection cStrings 
=  cStringsSection.ConnectionStrings;
None.gif
None.gifIEnumerator cStringsEnum 
=  cStrings.GetEnumerator();
None.gif
None.gif
int  j  =   0 ;
None.gif
ExpandedBlockStart.gifContractedBlock.gif
while  (cStringsEnum.MoveNext())  dot.gif {
InBlock.gif
InBlock.gif
string name = cStrings[j].Name;
InBlock.gif
InBlock.gifResponse.Write(
"<br>Name: " + name + " Value: " + cStrings[name]);
InBlock.gif
InBlock.gif
+= 1;
InBlock.gif
ExpandedBlockEnd.gif}

None.gif

结论

ASP.NET web.config文件使得开发者更方便在应用程序中保存应用程序配置。ASP.NET 2.0推出的改进简化了配置数据的恢复、存储和加密过程。虽然本文主要针对ASP.NET Web应用程序,但配置API提出的所有改进都可适用于Windows窗体应用程序(Windows form application)。

Tony Patton拥有丰富的Java、VB、Lotus及XML认证方面的知识,是一个专业的应用程序开发人员。

转载于:https://www.cnblogs.com/lxinxuan/archive/2007/07/17/821416.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值