13.2 ASP.NET应用程序配置

  ASP.NET包含一个重要的特性,它为开发人员提供了一个非常方便的系统配置文件,就是常用的Web.config和Machine.config。配置文件能够存用户或应用程序的储配置信息,让开发人员能够快速的建立Web应用环境,以及扩展Web应用配置。

13.2.1 ASP.NET应用程序配置
  ASP.NET为开发人员提供了强大的灵活的配置系统,配置系统通常通过文件的形式存在于Web应用根目录下。这些配置文件通常包括两类,分别是Web.config和Machine.config。Machine.config是服务器配置文件。服务器配置信息通常存储在该文件中,该文件一般存储在系统目录中的“systemroot\Microsoft.NET\Framework\VersionNumber\CONFIG”目录下。一台服务器只有一个Machine.config文件,该文件描述了所有ASP.NET Web应用程序所需要的默认配置。
  Web.config是应用程序配置文件,该文件从Machine.config文件集成一部分基本配置,并且Web.config能够作为服务器上所有ASP.NET应用程序配置的跟踪配置文件。每个ASP.NET应用程序根目录都包含Web.config文件,所以对于每个应用程序的配置都只需要重写Web.config文件中的相应配置节即可。
  在ASP.NET应用程序运行后,Web.config配置文件按照层次结构为传入的每个URL请求计算惟一的配置设置集合。这些配置只会计算一次便缓存在服务器上。如果开发人员针对Web.config配置文件进行了更改,则很有可能造成应用程序重启。值得注意的是,应用程序的重启会造成Session等应用程序对象的丢失,而不会造成服务器的重启。
  注意:如果针对Web.config文件中某些配置节(如processModel配置节)进行了更改,则可能需要重启IIS才能够让所做的应用程序配置立即生效。

13.2.2 Web.config配置文件
  ASP.NET应用程序的配置信息都存放于Web.config配置文件中,Web.config配置文件是基于XML格式的文件类型,由于XML文件的可伸缩性,使得ASP.NET应用配置变得灵活、高效、容易实现。同时,ASP.NET不允许外部用户直接通过URL请求访问Web.config,以提高应用程序的安全性。
1.Web.config配置文件的优点
  Web.config配置文件使得ASP.NET应用程序的配置变得灵活、高效和容易实现,同时Web.config配置文件还为ASP.NET应用提供了可扩展的配置,使得应用程序能够自定义配置,不仅如此,Web.config配置文件还包括以下优点。
1)配置设置易读性:由于Web.config配置文件是基于XML文件类型,所有的配置信息都存放在XML文本文件中,可以使用文本编辑器或者XML编辑器直接修改和设置相应配置节,相比之下,也可以使用记事本进行快速配置而无需担心文件类型。
2)更新的即时性:在Web.config配置文件中某些配置节被更改后,无需重启Web应用程序就可以自动更新ASP.NET应用程序配置。但是在更改有些特定的配置节时,Web应用程序会自动保存设置并重启。
3)本地服务器访问:在更改了Web.config配置文件后,ASP.NET应用程序可以自动探测到Web.config配置文件中的变化,然后创建一个新的应用程序实例。当浏览者访问ASP.NET应用时,会被重定向到新的应用程序。
4)安全性:由于Web.config配置文件通常存储的是ASP.NET应用程序的配置,所以Web.config配置文件具有较高的安全性,一般的外部用户无法访问和下载Web.config配置文件。当外部用户尝试访问Web.config配置文件时,会导致访问错误。
5)可扩展性:Web.config配置文件具有很强的扩展性,通过Web.config配置文件,开发人员能够自定义配置节,在应用程序中自行使用。
6)保密性:开发人员可以对Web.config配置文件进行加密操作而不会影响到配置文件中的配置信息。虽然Web.config配置文件具有安全性,但是通过下载工具依旧可以进行文件下载,对Web.config配置文件进行加密,可以提高应用程序配置的安全性。
  使用Web.config配置文件进行应用程序配置,极大的加强了应用程序的扩展性和灵活性,对于配置文件的更改也能够立即的应用于ASP.NET应用程序中。
2.Web.config配置文件的结构
  Web.config配置文件是基于XML文件类型的文件,所以Web.config文件同样包含XML结构中的树形结构。在ASP.NET应用程序中,所有的配置信息都存储在Web.config文件中的“<configuration>”配置节中。在此配置节中,包括配置节处理应用程序声明,以及配置节设置两个部分,其中,对处理应用程序的声明存储在configSections配置节内,示例代码如下所示。
+展开
-XML
    <configSections>
      <sectionGroup 
          name="system.web.extensions
          type="System.Web.Configuration.SystemWebExtensionsSectionGroup, 
          System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35
">

        <sectionGroup 
          name="scripting
          type="System.Web.Configuration.ScriptingSectionGroup, 
          System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35
">

          <section 
          name="scriptResourceHandler
          type="System.Web.Configuration.ScriptingScriptResourceHandlerSection, 
          System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35

          requirePermission="falseallowDefinition="MachineToApplication"/>

          <sectionGroup 
          name="webServices
          type="System.Web.Configuration.ScriptingWebServicesSectionGroup, 
          System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35
">

          </sectionGroup>
        </sectionGroup>
      </sectionGroup>
    </configSections>

  配置节设置区域中的每个配置节都有一个应用程序声明。节处理程序是用来实现ConfigurationSection接口的.NET Framework类。节处理程序生命中包括了配置设置接的名称,以及用来处理该配置节中的应用程序的类名。
配置节设置区域位于配置节处理程序声明区域之后。对配置节的设置还包括子配置节的是配置,这些子配置节同父配置节一起描述一个应用程序的配置,通常情况下这些同父配置节由同一个配置节进行管理,示例代码如下所示。
+展开
-XML
      <pages>
        <controls>
          <add tagPrefix="aspnamespace="System.Web.UI
          assembly="System.Web.Extensions, 
          Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35
"/>

          <add tagPrefix="aspnamespace="System.Web.UI.WebControls
          assembly="System.Web.Extensions, 
          Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35
"/>

        </controls>
      </pages>

  虽然Web.config配置文件是基于XML文件格式的,但是在Web.config配置文件中并不能随意的自行添加配置节或者修改配置节的位置,例如pages配置节就不能存放在configSections配置节之中。在创建Web应用程序时,系统通常会自行创建一个Web.config配置文件在文件中,系统通常已经规定好了Web.config配置文件的结构。

13.2.3 ASP.NET基本配置节
  在Web.config配置文件中包括很多的配置节,这些配置节都用来规定ASP.NET应用程序的相应属性。
1.<configuration>:根配置节
  所有Web.config的根配置节都存储与<configuration>标记中,在它内部封装了其他的配置节,示例代码如下所示。
+展开
-XML
<configuration>
          <syste.web>
          ……
</configuration>

2.<configSections>:处理声明配置节
  该配置节主要用于自定义的配置节处理程序声明,该配置节由多个“<section>”配置节组成,示例代码如下所示。
+展开
-XML
    <configSections>
      <sectionGroup 
      name="system.web.extensions
      type="System.Web.Configuration.SystemWebExtensionsSectionGroup, 
      System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35
">

        <sectionGroup name="scripting
      type="System.Web.Configuration.ScriptingSectionGroup, 
      System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35
">

          <section name="scriptResourceHandler
      type="System.Web.Configuration.ScriptingScriptResourceHandlerSection, 
      System.Web.Extensions, Version=3.5.0.0, Culture=neutral, 
      PublicKeyToken=31BF3856AD364E35

      requirePermission="falseallowDefinition="MachineToApplication"/>

        </sectionGroup>
      </sectionGroup>
    </configSections>

  其中<section>配置节包括name和type两种属性,name属性指定配置数据配置节的名称,而type属性指定与name属性相关的配置处理程序类。
3.<appSettings>:用户自定义配置节
  “<appSettings>”配置节为开发人员提供ASP.NET应用程序的扩展配置,通过使用“<appSettings>”配置节能够自定义配置文件,示例代码如下所示。
+展开
-XML
    <appSettings>
        <add key="Namevalue="Guojing"/> //增加自定义配置节
        <add key="E-mailvalue="soundbbg@live.cn"/>
    </appSettings>

  上述代码添加了两个自定义配置节,这两个自定义配置节分别为Name和E-mail,用于定义该Web应用程序的开发者的信息,以便在其他页面中使用该配置节。
  若需要在页面中使用该配置节,可以使用ConfigurationSettings.appSettings(“key的名称”)方法来获取自定义配置节中的配置值,示例代码如下所示。
+展开
-C#
        protected void Page_Load(object sender, EventArgs e)
        {
            TextBox1.Text = ConfigurationSettings.AppSettings["name"].ToString();//获取自定义配置节
        }

  “<appSettings>”配置节包括两个属性,分别为Key和Value。Key属性指定自定义属性的关键字,以方便在应用程序中使用该配置节,而Value属性则定义该自定义属性的值。
4.<customErrors>:用户错误配置节
  该配置节能够指定当出现错误时,系统自动跳转到一个错误发生的页面,同时也能够为应用程序配置是否支持自定义错误。“<customErrors>”配置节包括两种属性,这两种属性分别为mode和defaultRedirect。其中mode包括3种状态,这三种状态分别为On、Off和RemoteOnly。On表示启动自定义错误;Off表示不启动自定义错误;RemoteOnly表示给远程用户显示自定义错误。另外:defaultRedirect属性则配置了当应用程序发生错误时跳转的页面。
  “<customErrors>”配置节还包括子配置节“<error>”,该标记用于特定状态的自定义错误页面,子标记“<error>”包括两个属性,分别为statusCode和redirect,其中statusCode用于捕捉发生错误的状态码,而redirect指定发生该错误后跳转的页面,该配置节配置代码如下所示。
+展开
-XML
    <customErrors mode="RemoteOnlydefaultRedirect="GenericErrorPage.htm">
        <error statusCode="403redirect="NoAccess.htm" />
        <error statusCode="404redirect="FileNotFound.htm" />
    </customErrors>

  上述代码则在Web.config文件中配置了相应的customErrors信息。当出现404错误时,系统会自行跳转到FileNotFound.htm页面以提示404错误,开发人员能够编写FileNotFound.htm页面进行用户提示。
5.<globalization>:全局编码配置节
  “<globalization>”用于配置应用程序的编码类型,ASP.NET应用程序将使用该编码类型分析ASPX等页面,常用的编码类型包括:
1)UFT-8:Unicode UTF-8字节编码技术,ASP.NET应用程序默认编码。
2)UTF-16:Unicode UTF-16字节编码技术。
3)ASCII:标准的ASCII编码规范。
4)Gb2312:中文字符Gb2312编码规范。
  在配置“<globalization>”配置节时,其编码类型可以参考上述编码类型,如果不指定编码类型,则ASP.NET应用程序默认编码为UTF-8,示例代码如下所示。
+展开
-XML
<globalization fileEncoding="UTF-8requestEncoding="UTF-8responseEncoding="UTF-8"/>

6.<sessionState>:Session状态配置节
  <sessionState>配置节用于完成ASP.NET应用程序中会话状态的设置,<sessionState>配置节包括以下5种属性:
1)mode:指定会话状态的存储位置,一共有Off、Inproc、StateServer和SqlServer集中设置,Off表示禁用该设置,Inproc表示在本地保存会话状态,StateServer表示在服务器上保存会话状态,SqlServer表示在SQL Server保存会话设置。
2)stateConnectionString:用来指定远程存储会话状态的服务器名和端口号。
3)sqlConnectionString:用来连接SQL Server的连接字符串,当在mode属性中设置SqlServer时,则需要使用到该属性。
4)Cookieless:指定是否使用客户端cookie保存会话状态。
5)Timeout:指定在用户无操作时超时的时间,默认情况为20分钟。
<sessionState>配置节配置示例代码如下所示。
+展开
-XML
<sessionState mode="InProctimeout="25cookieless="false"></sessionState>

  ASP.NET不仅包括这些基本的配置节,还包括其他高级的配置节,高级的配置节通常用于指定界面布局样式,如母版页、默认皮肤、以及伪静态等高级功能。

加支付宝好友偷能量挖...


评论(0)网络
阅读(136)喜欢(0)Asp.Net/C#/WCF