第二版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文件。
<?xml version="1.0"?> <configuration> <appSettings> <add key="site" value="TechRepublic.com"/> </appSettings> <connectionStrings> <add name="db" connectionString="connection details"/> </connectionStrings> <system.web> <compilation debug="false" /> <authentication mode="" /> <authorization> <allow users="tester"/> </authorization> <customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm"> <error statusCode="403" redirect="NoAccess.htm" /> <error statusCode="404" redirect="FileNotFound.htm" /> </customErrors> </system.web> </configuration> |
该文件包含以下标准区域:appSettings、connectionStrings、compilation、authentication和custiomErrors。WebConfigurationManager类中含有将这些区域作为对象处理的方法。下表是这个列表的一个子集。你可以在System.Web.Configuration命名空间找到一个更加详细的综合列表。
CustiomErrorsSection:访问web.config中定义错误处理的Custom Errors区域。
AuthenticationSection:允许你定义应用程序如何处理用户验证。
AuthorizationSection:允许和拒绝用户或群体访问。
列表B中的代码访问这些区域并显示每个区域的值。
<%@ Page Language="" %> <%@ Import Namespace="System.Web.Configuration" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <script runat="server"> protected void Page_Load(object sender, EventArgs e) { AuthenticationSection asec; AuthorizationSection auth; CustomErrorsSection cerr; asec = (AuthenticationSection) WebConfigurationManager.GetSection("system.web/authentication"); auth = (AuthorizationSection) WebConfigurationManager.GetSection("system.web/authorization"); cerr = WebConfigurationManager.GetSection("system.web/customErrors") as CustomErrorsSection; if (asec != null) { Response.Write("<br>Authentication Mode: " + asec.Mode.ToString()); } if (auth != null) { for (int i = 0; i < (auth.Rules.Count - 1); i++) { Response.Write("<br>Customer Errors mode: " + auth.Rules[i].Action.ToString() + " - " + auth.Rules[i].Users.ToString()); } } if (cerr != null) { Response.Write("<br>Customer Errors mode: " + cerr.Mode.ToString()); } } </script> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>Configuration Class</title> </head><body></body></html> |