⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 configformat.aspx

📁 书籍教程 >> .Net教程 >> asp.net编程精彩百例
💻 ASPX
字号:

<!-- #include virtual="/quickstart/aspplus/include/header.inc" -->

<h4>配置文件格式</h4>

ASP.NET 配置文件是基于 XML 的文本文件(每个都命名为 web.config),可出现在 ASP.NET Web 应用程序服务器上的任何目录中。

每个 web.config 文件将配置设置应用到它所在的目录和它下面的所有虚拟子目录。子目录中的设置可随意重写或修改在父目录中指定的设置。根配置文件&mdash;&mdash;WinNT\Microsoft.NET\Framework\&lt;version&gt;\config\machine.config,提供整台计算机的默认配置设置。ASP.NET 配置 IIS 阻止对 web.config 文件进行直接的浏览器访问,以确保这些文件的值不能成为公共的(试图访问这些文件将导致 ASP.NET 返回 403 : Access Forbidden)。
<p>
运行时,ASP.NET 使用这些 web.config 配置文件,针对传入的每个 URL 目标请求分层计算唯一的设置集合(这些设置只计算一次,然后在后面的请求间被缓存起来;ASP.NET 自动监视文件更改,如果有任何配置文件发生更改时则使缓存无效)。
<p>
例如,通过按下列顺序应用 web.config 文件设置,对 URL http://myserver/myapplication/mydir/page.aspx 的配置设置进行计算:
<p>
<div class="code"><pre>
Base configuration settings for machine.
C:\WinNT\Microsoft.NET\Framework\v.1.00\config\machine.config

Overridden by the configuration settings for the site (or the root application).
C:\inetpub\wwwroot\web.config

Overridden by application configuration settings.
D:\MyApplication\web.config

Overridden by subdirectory configuration settings.
D:\MyApplication\MyDir\web.config
</pre></div>

如果 web.config 文件位于某个站点(如“Inetpub\wwwroot”)的根目录下,其配置设置将应用于该站点的所有应用程序。注意,给定目录或应用程序根中 web.config 文件的存在是完全可选的。如果 web.config 文件不存在,该目录的所有配置设置将自动从父目录继承。

<h5>配置节处理程序和节</h5>

web.config 文件是基于 XML 的文本文件,它可以包含标准的 XML 文档元素(包括格式正确的标记、注释、文本、cdata 等等)。该文件的编码格式可以为 ANSI、UTF-8 或 Unicode;系统自动检测编码。

web.config 文件的根元素总是 <b>&lt;configuration&gt;</b> 标记。ASP.NET 和最终用户设置因此封装在该标记中,如下所示:

<div class="code"><pre>
&lt;configuration&gt;
    &lt;!- Configuration settings would go here. --&gt;
&lt;/configuration&gt;
</pre></div>

<b>&lt;configuration&gt;</b> 标记通常包含三种不同类型的元素,1) 配置节处理程序声明,2) 配置节组,3) 配置节设置。
<p>

<ul>

<li><b>配置节处理程序</b>&mdash;&mdash;ASP.NET 配置结构在 web.config 文件中的文件格式或支持的设置方面不进行任何假设。相反,它将处理 web.config 数据的任务委托给配置节处理程序,即实现 <b>IConfigurationSectionHandler</b> 接口的 .NET 框架类。单个 <b>IConfigurationSectionHandler</b> 声明只需要出现一次,通常是在 machine.config 文件中。子目录中的 web.config 文件自动继承此声明。配置节处理程序通过使用嵌套在 <b>&lt;configSections&gt;</b> 标记中的节标记指令在 web.config 文件中声明。节标记可进一步由节组标记限定,将它们组织为逻辑组(参见下文)。每个节标记标识一个表示特定配置数据节的标记名和一个处理该节的关联 <b>IConfigurationSectionHandler</b> 类。
<p>

<li><b>配置节组</b>&mdash;&mdash;ASP.NET 配置允许出于组织目的对节进行分层分组。<b>&lt;sectionGroup&gt;</b> 标记可显示在 <b>&lt;configSections&gt;</b> 标记的内部或其他 <b>&lt;sectionGroup&gt;</b> 标记的内部。例如,ASP.NET 节处理程序全都显示在 <b>&lt;system.web&gt;</b> 节组中。
<p>

<li><b>配置节</b>&mdash;&mdash;ASP.NET 配置设置在配置标记节中表示,同时嵌套在 <b>&lt;configuration&gt;</b> 标记(和可选的节组标记)中。对于每个配置节,必须在 config 层次结构中定义适当的节处理程序。例如,在下面的示例中,标记 <b>&lt;httpModules&gt;</b> 是定义 HTTP 模块配置数据的配置节。<b>System.Configuration.HttpModulesConfigurationHandler</b> 类负责在运行时解释 <b>&lt;httpModules&gt;</b> 标记中包含的内容。注意,节处理程序定义和节必须具有相同的节组限定符(此处为 <b>&lt;system.web&gt;</b>)。还应注意,标记名区分大小写,必须按所显示的原样键入。ASP.NET 的各种属性和设置也区分大小写,并且配置运行时不检查大小写是否不匹配。
</ul>

<p>
<div class="code"><pre>
&lt;configuration&gt;

  &lt;configSections&gt;
    &lt;sectionGroup name="system.web"&gt;
      &lt;section
        name="httpModules"
        type="System.Web.Configuration.HttpModulesConfigurationHandler,System.Web"
      /&gt;
    &lt;/sectionGroup&gt;
  &lt;/configSections&gt;

  &lt;system.web&gt;
    &lt;httpModules&gt;
      &lt;add
        name="CookielessSession"
        type="System.Web.SessionState.CookielessSessionModule,System.Web"
      /&gt;
      &lt;add
        name="OutputCache"
        type="System.Web.Caching.OutputCacheModule,System.Web"
      /&gt;
      &lt;add
        name="Session"
        type="System.Web.SessionState.SessionStateModule,System.Web"
      /&gt;
      &lt;add
        name="WindowsAuthentication"
        type="System.Web.Security.WindowsAuthenticationModule,System.Web"
      /&gt;
      &lt;add
        name="FormsAuthentication"
        type="System.Web.Security.FormsAuthenticationModule,System.Web"
      /&gt;
      &lt;add
        name="PassportAuthentication"
        type="System.Web.Security.PassportAuthenticationModule,System.Web"
      /&gt;
      &lt;add
        name="UrlAuthorization"
        type="System.Web.Security.UrlAuthorizationModule,System.Web"
      /&gt;
      &lt;add
        name="FileAuthorization"
        type="System.Web.Security.FileAuthorizationModule,System.Web"
      /&gt;
    &lt;/httpModules&gt;
  &lt;/system.web&gt;

&lt;/configuration&gt;
</pre></div>



<h5>使用位置和路径</h5>
默认情况下,在顶级 <b>&lt;configuration&gt;</b> 标记中定义的所有配置设置都应用到包含 web.config 文件的当前目录位置以及该位置下的所有子路径。还可通过使用具有适当的约束 <b>path</b> 属性的 <b>&lt;location&gt;</b> 标记,将配置设置应用到当前配置文件下的特定子路径。如果配置文件是主 machine.config 文件,则可以将设置应用到特定的虚拟目录或应用程序。如果配置文件是 web.config 文件,则可将设置应用到特定的文件、子目录、虚拟目录或应用程序。
<p>
<div class="code"><pre>
&lt;configuration&gt;

  &lt;location path="EnglishPages"&gt;
    &lt;system.web&gt;
      &lt;globalization
        requestEncoding="iso-8859-1"
        responseEncoding="iso-8859-1"
      /&gt;
    &lt;/system.web&gt;
  &lt;/location&gt;

  &lt;location path="EnglishPages/OneJapanesePage.aspx"&gt;
    &lt;system.web&gt;
      &lt;globalization
        requestEncoding="Shift-JIS"
        responseEncoding="Shift-JIS"
      /&gt;
    &lt;/system.web&gt;
  &lt;/location&gt;

&lt;/configuration&gt;
</pre></div>

<h5>锁定配置设置</h5>
除了使用 <b>&lt;location&gt;</b> 标记指定路径信息外,还可以指定安全性以使配置层次结构中的其他深层配置文件无法重写该设置。若要锁定一组设置,可以在周围的 <b>&lt;location&gt;</b> 标记上指定 <b>allowOverride</b> 属性并将其设置为假。以下代码锁定两个不同应用程序的模拟设置。

<p>
<div class="code"><pre>
&lt;configuration&gt;

  &lt;location path="app1" allowOverride="false"&gt;
    &lt;system.web&gt;
        &lt;identity impersonate="false" userName="app1" password="app1pw" /&gt;
    &lt;/system.web&gt;
  &lt;/location&gt;

  &lt;location path="app2" allowOverride="false"&gt;
    &lt;system.web&gt;
        &lt;identity impersonate="false" userName="app2" password="app2pw" /&gt;
    &lt;/system.web&gt;
  &lt;/location&gt;

&lt;/configuration&gt;
</pre></div>

<p>
注意,如果用户试图在其他配置文件中重写这些设置,配置系统将引发错误:

<div class="code"><pre>
&lt;configuration&gt;

  &lt;system.web&gt;
      &lt;identity userName="developer" password="loginpw" /&gt;
  &lt;/system.web&gt;

&lt;/configuration&gt;
</pre></div>

<h5>标准 ASP.NET 配置节</h5>

ASP.NET 提供了若干标准配置节处理程序,用于处理 web.config 文件中的配置设置。下表提供了有关这些节的简短说明以及指向更多信息的指针。
<p>

<table class="table2" width="90%" cellpadding=3>
<tr>
<th width="200">节名</th><th width="*">说明</th>
</tr>
<tr>
<td><b>&lt;httpModules&gt;</b></td><td> 负责配置应用程序中的 HTTP 模块。HTTP 模块参与处理应用程序中的每个请求。常用的用途包括安全性和记录。</td>
</tr>
<tr>
<td><b>&lt;httpHandlers&gt;</b></td><td>负责将传入的 URL 映射到 <b>IHttpHandler</b> 类。子目录不继承这些设置。还负责将传入的 URL 映射到 <b>IHttpHandlerFactory</b> 类。<b>&lt;httpHandlers&gt;</b> 节中表示的数据由子目录分层继承。有关更多信息,请参阅本教程的 <a href="httphandlers.aspx">Http 处理程序和工厂</a>一节。</td>
</tr>
<tr>
<td><b>&lt;sessionState&gt;</b></td><td>负责配置会话状态 HTTP 模块。有关更多信息,请参阅本教程的<a href="stateoverview.aspx">管理应用程序状态</a>一节。</td>
</tr>
<tr>
<td><b>&lt;globalization&gt;</b></td><td>负责配置应用程序的全局化设置。有关更多信息,请参阅本教程的<a href="internationalization.aspx">本地化</a>一节。</td>
</tr>
<tr>
<td><b>&lt;compilation&gt;</b></td><td>负责配置 ASP.NET 使用的所有编译设置。有关更多信息,请参阅本教程的<a href="businessobjs.aspx">业务对象</a>和<a href="debugcomsdk.aspx">调试</a>节。</td>
</tr>
<tr>
<td><b>&lt;trace&gt;</b></td><td>负责配置 ASP.NET 跟踪服务。有关更多信息,请参阅本教程的<a href="tracingoverview.aspx">跟踪</a>一节。</td>
</tr>
<tr>
<td><b>&lt;processModel&gt;</b></td><td>负责配置 IIS Web 服务器系统上的 ASP.NET 进程模型设置。  </td>
</tr>
<tr>
<td><b>&lt;browserCaps&gt;</b></td><td>负责控制浏览器功能组件的设置。有关更多信息,请参阅本教程的<a href="configretrieve.aspx">检索配置</a>一节。</td>
</tr>
</table>

  <!-- #include virtual="/quickstart/aspplus/include/footer.inc" -->

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -