当前位置: 首页 > 文章教程  > 计算机与互联网 > 网络编程

6.2配置ASP.NET应用程序

8/31/2020 9:56:04 PM 人评论

6.2配置ASP.NET应用程序

图片 1 知识点讲解:光盘:视频\PPT讲解(知识点)\第6章\配置ASP.NET应用程序.mp4

ASP.NET提供给用户一个强大而又灵活的配置系统,此配置系统支持如下两类配置文件。

1.服务器配置

服务器配置信息存储在一个名为“Machine.config”的文件中,一般在systemroot\Microsoft. NET\Framework\versionNumber\CONFIG\目录下,一台服务器只有一个Machine.config,这个文件描述了所有ASP.NET Web应用程序所用的默认配置。

2.应用程序配置

在服务器配置文件Machine.config的同一目录下,有一个Web.config文件。该Web.config文件从Machine.config文件那里继承一些基本配置设置,并且它是该服务器上所有ASP.NET应用程序配置的跟踪配置文件。

运行时,ASP.NET使用Web.config文件按层次结构为传入的每个URL请求计算唯一的配置设置集合。这些设置只计算一次,随后将缓存在服务器上。ASP.NET检测对配置文件进行的任何更改,然后自动将这些更改应用于受影响的应用程序,而且大多数情况下会重新启动应用程序。只要更改层次结构中的配置文件,就会自动计算并再次缓存分层配置设置。除非processModel节已更改,否则IIS服务器不必重新启动,所做的更改即会生效。

对Machine.config文件的配置是通过对Web.config文件的配置来实现的。

所有的ASP.NET配置信息都保存在Web.config文件中的configuration元素中,该元素中的配置信息分为如下两个主区域。

1.配置节处理程序声明

配置节处理程序声明区域保存在Web.config文件中的configSections元素内,它包含在其中声明节处理程序的ASP.NET配置section元素。也可以将这些配置节处理程序声明嵌套在sectionGroup元素中,以帮助组织配置信息。在现实应用中,通常所有的ASP.NET配置节处理程序都在system.web节组中进行分组。例如下面的代码。

<sectionGroup name="system.web"
 type="System.Web.Configuration.SystemWebSectionGroup, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
 <!-- <section /> elements. -->
 </sectionGroup>

此区域中的每个配置节都有一个节处理程序声明。节处理程序是用来实现ConfigurationSection接口的.NET Framework类。节处理程序声明中包含配置设置节的名称(如pages),以及用来处理该节中配置数据的节处理程序类的名称(如System.Web. Configuration.PagesSection)。例如下面的代码。

<section name="pages" type="System.Web.Configuration.PagesSection, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
</section>

ASP.NET默认配置节的节处理程序在Machine.config文件中进行声明。根Web.config文件和ASP.NET应用程序中的其他配置文件都会自动继承在Machine.config文件中声明的配置处理程序。只有当创建用来处理自定义设置节的自定义节处理程序类时,才需要声明新的节处理程序。

2.配置节设置

配置节设置区域位于配置节处理程序声明区域之后,里面包含了实际的配置设置。在默认情况下,在内部或者在某个根配置文件中,对于configSections区域中的每一个section和sectionGroup元素,都会有一个指定的配置节元素。

图像说明文字

注意:可以在systemroot\Microsoft.NET\Framework\versionNumber\CONFIG\Machine.config. comments文件中查看配置节的默认设置。

配置节元素还可以包含子元素,这些子元素与其父元素由同一个节处理程序处理。例如下面的代码。

<pages buffer="true" enableSessionState="true" asyncTimeout="45"> 
<namespaces>
<add namespace="System" />
<add namespace="System.Collections" />
</namespaces>
</pages>

在上述代码中,pages元素包含一个namespaces元素,该元素没有相应的节处理程序,因为它由pages节处理程序来处理。

为了在合适的目录级别实现应用程序所需级别的详细配置信息,而不影响较高目录级别中的配置设置,通常在相应的子目录下放置一个Web.config文件进行单独配置。这些Wen.config文件与其上级配置文件形成一种层次的结构,这样,每个Web.config文件都将继承上级配置文件,并设置自己特有的配置信息,应用于它所在的目录,以及它下面的所有子目录。

ASP.NET应用程序配置文件都继承于该服务器上的一个根Web.config文件,即systemroot\Microsoft.NET\Framework\versionNumber\CONFIG\Web.config文件,该文件包括应用于所有运行某一具体版本的.NET Framework的ASP.NET应用程序的设置。由于每个ASP.NET应用程序都从根Web.config文件那里继承默认配置设置,因此只须为重写默认设置创建Web.config文件。

所有的.NET Framework应用程序(不仅仅是ASP.NET应用程序)都从一个名为systemroot\Microsoft.NET\Framework\versionNumber\CONFIG\Machine.config的文件那里继承基本配置设置和默认值。Machine.config 文件用于服务器级的配置设置,其中的某些设置不能在位于层次结构中较低级别的配置文件中被重写。

在表6-15中,详细列出了每个文件在配置层次结构中的级别、文件名称,以及对每个文件重要继承特征的说明。

表6-15 层次配置说明信息

级  别

文 件 名

描  述

服务器

Machine.config

包含服务器上所有Web应用程序的ASP.NET架构,位于配置合并层次结构的顶层

根Web

Web.config

服务器的Web.config文件与Machine.config文件存储在同一个目录中,它包含大部分system.web配置节的默认值。运行时,此文件是从配置层次结构中从上往下数第二层合并的

网站

Web.config

特定网站的Web.config文件包含应用于该网站的设置,并向下继承到该站点的所有ASP.NET应用程序和子目录

ASP.NET应用
程序根目录

Web.config

特定ASP.NET应用程序的Web.config文件位于该应用程序的根目录中,它包含应用于Web应用程序并向下继承到其分支中的所有子目录的设置

ASP.NET应用
程序子目录

Web.config

应用程序子目录的Web.config文件包含应用于此子目录并向下继承到其分支中的所有子目录的设置

客户端应用
程序目录

ApplicationName.config

ApplicationName.config文件包含Windows客户端应用程序(而非 Web 应用程序)的设置

默认情况下,在顶层<configuration>标记内的所有配置将作用于包含Web.config文件的目录及其子目录。但用户可以通过设置<location>标记的path属性,将配置信息应用到Web.config文件下的特定子目录中。在ASP.NET中,通用<location>配置的范例代码如下。

<configuration>
   <location path=vASPNETPages">
    <system.Web>
<globalization requestEncoding="iso-8859-1" responseEncoding="iso-8859-1"/>
     </system.Web>
   </location>
   <location path="ASPNETPages/EightChapter.aspx">
     <system.Web>
<globalization requestEncoding="Shift-JIS" responseEncoding="Shift-JIS" />
    </system.Web>
   </location>
</configuration>

在上面的代码中,通过设置两个<location>标记及其path属性,把两个不同的配置设置应用到不同的子路径。具体说明如下。

  • <location path ="ASPNETPages">标记:将配置作用于ASP NETPages的子目录。
  • <location path="ASPNETPages/EightChapter.aspx">标记:将配置作用于ASPNETPages/ Eight Chapter.aspx文件。

<location>标记除了指定配置信息的路径外,还可以锁定设置,使配置层次结构中的其他配置文件无法覆盖该设置,增强配置的安全性。例如下面的代码。

<configuration>
   <location path="ASPNETPages" allowOverride="false" >
     <system.Web>
<globalization requestEncoding="iso-8859-1" responseEncoding="iso-8859-1"/>
     </system.Web>
   </location>
</configuration>

在上面的代码中,通过设置allowOverride属性值为false,锁定了<globalization>标记的requestEncoding和responseEncoding属性设置。如果用户试图在其他配置文件中重写这些设置,配置系统将会出现错误提示。

在配置文件Web.config中,定义了很多配置元素处理程序声明和配置元素处理程序。

1.<configuration>

所有Web.config的根元素都是<configuration>标记,在它内部封装了其他所有配置元素。格式如下。

<configuration>
……
</configuration>

2.<configSections>

<configSections>配置元素主要用于自定义的配置元素处理程序声明,所有的配置元素处理程序声明都在这部分。<configSections>由多个<section>构成,其中<section>主要有如下2个属性。

  • name:指定配置数据元素的名称。
  • type:指定与name属性相关的配置处理程序类。

3.<appSettings>

<appSettings>元素可以定义自己需要的应用程序设置项,其语法格式如下。

<configuration>
<appSettings>
     <add key=" [key] " Value=" [Value] " />
</appSettings>
</configuration>

其中,<add>子标记主要有如下2个属性定义。

  • key:指定该设置项的关键字,便于在应用程序中引用。
  • Value:指定该设置项的值。

4.<compilation>

<compilation>配置节位于<system.Web>标记中,用于设置使用哪种语言编译器来编译Web页面,以及编译页面时是否包含调试信息。<compilation>配置主要用于如下4种属性设置。

  • defaultLanguage:设置在默认情况下Web页面的脚本块中使用的语言。支持的语言有Visual Basic.Net、C#和Jscript。可以选择其中一种,也可以选择多种,方法是使用一个由分号分隔的语言名称列表,如Visual Basic.NET和C#。
  • debug:设置编译后的Web页面是否包含调试信息。其值为true时,将启用ASPX调试;为false时,不启用,但可以提高应用程序运行时的性能。
  • explicit:是否启用Visual Basic显示编译选项功能。其值为true时启用,为false时不启用。
  • strict:是否启用Visual Basic限制编译选项功能。其值为true时启用,为false时不启用。

例如下面的代码。

<configuration>
<system.web>
<compilation defaultLanguage="c#|" debug="true" explicit= "true" strict = "true"/>
</system.web>
</configuration>

在<compilation>元素中还可以添加<compiler>、<assemblies>、<namespaces>等子标记,通过上述标记可以更好地完成编译方面的有关设置。

5.<customErrors>

<customErrors>配置元素用于完成如下两项工作。

(1)启用或禁止自定义错误。

(2)在指定的错误发生时,将用户重定向到某个URL。

<customErrors>主要包括如下两个属性。

  • mode:具有On、Off和RemoteOnly 3种状态。On表示启用自定义错误;Off表示显示详细的ASP.NET错误信息;RemoteOnly表示给远程用户显示自定义错误。一般来说,出于安全方面的考虑,只需要给远程用户显示自定义错误,而不显示详细的调试错误信息,此时需要选择RemoteOnly状态。
  • defaultRedirect:当发生错误时,用户被重定向到默认的URL。

另外,<customErrors>元素还包含一个子标记<error>,用于为特定的HTTP状态码指定自定义错误页面。<error>具有如下两个属性。

  • statusCode:自定义错误处理程序页面要捕获的HTTP错误状态码。
  • redirect:指定的错误发生时,要重定向到URL。

6.<globalization>

<globalization>配置元素主要完成应用程序的全局配置,主要包括以下3个属性。

  • fileEncoding:用于定义编码类型,供分析ASPX、ASAX、ASMX文件时使用。其主要取值有UTF-7、UTF-8、UTF-16和ASCII。
  • requestEncoding:指定ASP.NET处理的每个请求的编码类型,其可能的取值与fileEncoding属性相同。
  • responseEncoding:指定ASP.NET处理的每个响应的编码类型,其可能的取值与fileEncoding属性相同。

7.<sessionState>

<sessionState>配置用于完成ASP.NET应用程序的会话状态设置,主要有如下5个属性。

  • mode:指定会话状态的存储位置。共有Off、Inproc、StateServer和SqlServer 4种状态。
  • stateConnectionString:用来指定远程存储会话状态的服务器名和端口号。如果将模式mode设置为StateServer,则需要用到该属性。默认值为本机。
  • sqlConnectionString:指定保存状态的SQL Server的连接字符串。在将模式mode设置为SqlServer时,需要用到该属性。
  • Cookieless:指定是否不使用客户端cookie保存会话状态。其值为true表示不使用,为false表示使用。
  • timeout:用来定义会话空闲多少时间后将被中止。默认时间一般为20分钟。

8.<trace>

<trace>配置元素用来实现ASP.NET应用程序的跟踪服务,在程序测试过程中定位错误。<trace>的主要属性如下5个。

  • enabled:指定是否启用应用程序跟踪功能。
  • requestLimit:指定保存在服务器上请求跟踪的个数,默认值为10。
  • pageOutput:指定是否在每个页面的最后显示应用程序的跟踪信息。
  • traceMode:设置跟踪信息输出的排列次序。默认为SortByTime(时间排序),也可以定义为SortByCategory(字母排序)。
  • localOnly:指定是否仅在Web服务器上显示跟踪查看器。

9.<authentication>

<authentication>配置元素主要进行安全配置工作,它最常用的属性是mode,用来控制ASP.NET Web应用程序的验证模式。mode取值的具体说明如下。

  • Windows:用于将Windows指定为验证模式。
  • Forms:采用基于ASP.NET表单的验证。
  • Passport:采用微软的Passport验证。
  • None:不采用任何验证方式。

ASP.NET应用程序配置系统是可扩展的,用户不仅可以使用系统预定义的元素,还可以在Web.config文件中添加自定义标记,创建自己的配置处理程序和设置。

1.使用<appSettings>标记

Web.config文件中有一个可选标记<appSettings>,专门用于存放应用程序设置。该应用程序的任何页面都可以访问到该Web.config文件中的应用程序设置。如果要修改设置,只要在配置文件中进行修改即可,无须逐个修改应用程序的每个页面。

例如下面的代码。

<configuration>
 <appSettings>
<add key="MySettings" value="扩展应用程序" />
   </appSettings>
</configuration>

在上面的Web.config文件中,设置了一个字符串,关键字为MySettings,键值为“扩展应用程序”。

在.NET类库中有一个System.Configuration.ConfigurationSettings类,利用它可以检索任意配置节的数据信息。ConfigurationSettings类中有一个AppSettings属性,它可以检索<appSettings>节的信息,具体方法如下。

string sqlconn=ConfigurationSettings.AppSettings["MySettings"];

2.使用自定义标记

在Web.config文件中并不是只通过<appsettings>来保存配置信息,也允许用户添加新的自定义标记。在该标记内可定义新的配置信息。例如下面的代码。

<configuration>
  <configSections>
   <section name="OwnSettings"
    type="System.Configuration.NameValueFileSectionHandler,
    System.Web,Version=1.0.3300.0,Culture=neutral,
    PublicKeyToken=b77a5c561934e089" /> 
  </configSections>
  <OwnSettings>
 <add key="constring" Value="访问自定义的配置信息"/>
 </OwnSettings>
</configuration>

上述代码的具体配置过程可以分为2步。

(1)在<configSections>中,声明了一个新的自定义配置元素处理程序,即声明自定义标记的名称(<OwnSettings>)和类型(System.Configuration.NameValueFileSection Handler)。

(2)在<configSections>域之后,为声明的标记(<OwnSettings>)做实际的应用程序配置。

相关教程

共有条评论 网友评论

验证码: 看不清楚?