一、Web.Config继承特性

首先我们就来看看配置文件的继承层次。都知道在ASP.NET中有很多的配置文件,如machine.config,web.config,特别是web.config出现在很多的地方,出现在不同的地方作用也不一样。而且我们还知道machine.config中的配置对服务器上所有ASP.NET网站起作用,而web.config中的配置就依据它所在的位置而定,如在一个网站根目录中的web.config就对整个网站起作用,在一个网站中的某个文件夹中的web.config就只对该文件夹起作用,而且网站跟目录中的web.config中的配置也对这个文件夹起作用。这就反映出了另外一个事实:配置文件是有继承层次的. 换个角度,对于一个网站中的某个文件夹,它不仅仅只是受本文件夹中web.config的配置约束,而且还收到本网站中根目录下的web.config的约束,而且还受到本台服务器上的machine.config的约束。<br />

下面我们就来具体的看看ASP.NET中的配置文件的继承层次:

1.machine.confiig-在ASP.NET中,很多的默认的配置都是定义在这个配置文件中的,但是有一些配置已经从machine.config中移出到别的地方了,为了缩短ASP.NET的加载时间。我们知道在运行一个ASP.NET程序的时候,ASP.NET运行时是要加载很多的配置文件的,当然machine.config是一定要加载的,但是其中有些配置不是必须的,所以就移到别的地方,如果用到就加载。

2.在安装根目录中的web.config-在%windir%\Microsoft.NET\Framework\v2.0.50727\CONFIG中的配置文件,之前说过machine.config把很多的配置移出了,就放在这个配置中。

3.在根目录中的web.config-我们也可以把web.config放在根目录中,让它对整个根目录起作用。如:c:\inetpub\wwwroot.因为我们可以新建很多的虚拟目录文件夹,文件夹中有网站程序,如果把配置文件放在虚拟目录中,那么配置就对整个文件夹中的网站起作用。

4.一个网站中的web.config-这是我们最常见的配置地方。

5.网站中的某个文件夹中的web.config-我们常常通过这个配置文件来限制对文件的访问权限。

继承机构图

二、Web.Config结构说明

当创建一个ASP.NET项目时,默认情况下会在根目录自动创建一个默认的 Web.config文件,包括默认的配置设置,所有的子目录都继承它的配置设置。如果你想修改子目录的配置设置,你可以在该子目录下新建一个Web.config文件。它可以提供除从父目录继承的配置信息以外的配置信息,也可以重写或修改父目录中定义的设置。Web.config文件是按照XML的格式定义的,所以必须严格遵守XML格式。

所有配置信息都驻留在 <configuration> 和 </configuration> 根 XML 标记之间。标记间的配置信息分为两个主区域:配置节处理程序声明区域和配置节设置区域。

配置节处理程序声明出现在配置文件顶部 <configSections> 和 </configSections> 标记之间,配置节声明使用<section>节,如:

<section name="dataConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings, Microsoft.Practices.EnterpriseLibrary.Data" />

配置节也支持嵌套,外层的配置节使用<sectionGroup>,内层的使用<section>,如:

<sectionGroup name="webServices" type="System.Web.Configuration.ScriptingWebServicesSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> 
                <section name="jsonSerialization" type="System.Web.Configuration.ScriptingJsonSerializationSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="Everywhere"/> 
                <section name="profileService" type="System.Web.Configuration.ScriptingProfileServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/> 
      </sectionGroup>

配置节设置区域位于 <configSections> 区域之后,它包含实际的配置设置,如:

<dataConfiguration defaultDatabase="DefaultConnection" />

所有的配置节都必须遵守先声明后使用的原则,不然编译程序时会报错。

有人可能会疑问,为什么Web.config中默认生成的配置节没看到声明就直接用呢?比如<connectionStrings>和<appSettings>。这是因为这些节的声明是在Windows\Microsoft .NET\Framework\versionNumber\CONFIG\Machine.config中完成的,Machine.config 文件用于服务器级的配置设置,Web.config文件继承 Machine.config 文件中的所有设置。

三、WebConfig几点配置说明

以下所有的代码都应该位于

<configuration>

<system.web>

</system.web>

</configuration>

之间,出于学习的目的下面的示例都省略了这段XML标记

1、<authentication> 节

作用:配置 ASP.NET 身份验证支持(为Windows、Forms、PassPort、None四种)。该元素只能在计算机、站点或应用程序级别声明。<authentication> 元素必需与<authorization> 节配合使用。

示例:

以下示例为基于窗体(Forms)的身份验证配置站点,当没有登陆的用户访问需要身份验证的网页,网页自动跳转到登陆网页。

  1. <authentication mode="Forms" >
  2. <forms loginUrl="logon.aspx" name=".FormsAuthCookie"/>
  3. </authentication>

其中元素loginUrl表示登陆网页的名称,name表示Cookie名称

2、<authorization> 节

作用:控制对 URL 资源的客户端访问(如允许匿名用户访问)。此元素可以在任何级别(计算机、站点、应用程序、子目录或页)上声明。必需与<authentication> 节配合使用。

示例:以下示例禁止匿名用户的访问

  1. <authorization>
  2. <deny users="?"/>
  3. </authorization>

注:你可以使用user.identity.name来获取已经过验证的当前的用户名;可以使用web.Security.FormsAuthentication.RedirectFromLoginPage方法将已验证的用户重定向到用户刚才请求的页面.

3、<compilation>节

作用:配置 ASP.NET 使用的所有编译设置。默认的debug属性为“True”.在程序编译完成交付使用之后应将其设为 True(Web.config文件中有详细说明,此处省略示例)

4、<customErrors>

作用:为 ASP.NET 应用程序提供有关自定义错误信息的信息。它不适用于 XML Web services 中发生的错误。

示例:当发生错误时,将网页跳转到自定义的错误页面。

  1. <customErrors defaultRedirect="ErrorPage.aspx" mode="RemoteOnly">
  2. </customErrors>

其中元素defaultRedirect表示自定义的错误网页的名称。mode元素表示:对不在本地 Web 服务器上运行的用户显示自定义(友好的)信息。

5、<httpRuntime>节

作用:配置 ASP.NET HTTP 运行库设置。该节可以在计算机、站点、应用程序和子目录级别声明。

示例:控制用户上传文件最大为4M,最长时间为60秒,最多请求数为100

  1. <httpRuntime maxRequestLength="4096" executi appRequestQueueLimit="100"/>

6、 <pages>

作用:标识特定于页的配置设置(如是否启用会话状态、视图状态,是否检测用户的输入等)。<pages>可以在计算机、站点、应用程序和子目录级别声明。

示例:不检测用户在浏览器输入的内容中是否存在潜在的危险数据(注:该项默认是检测,如果你使用了不检测,一要对用户的输入进行编码或验证),在从客户端回发页时将检查加密的视图状态,以验证视图状态是否已在客户端被篡改。(注:该项默认是不验证)

  1. <pages buffer="true" enableViewStateMac="true" validateRequest="false"/>

7、<sessionState>

作用:为当前应用程序配置会话状态设置(如设置是否启用会话状态,会话状态保存位置)。

示例:

  1. <sessionState mode="InProc" cookieless="true" timeout="20"/>
  2. </sessionState>

注:

mode="InProc"表示:在本地储存会话状态(你也可以选择储存在远程服务器或SAL服务器中或不启用会话状态)

cookieless="true"表示:如果用户浏览器不支持Cookie时启用会话状态(默认为False)

timeout="20"表示:会话可以处于空闲状态的分钟数

8、<trace>

作用:配置 ASP.NET 跟踪服务,主要用来程序测试判断哪里出错。

示例:以下为Web.config中的默认配置:

  1. <trace enabled="false" requestLimit="10" pageOutput="false" traceMode="SortByTime" localOnly="true" />

注:

enabled="false"表示不启用跟踪;requestLimit="10"表示指定在服务器上存储的跟踪请求的数目

pageOutput="false"表示只能通过跟踪实用工具访问跟踪输出;

traceMode="SortByTime"表示以处理跟踪的顺序来显示跟踪信息

localOnly="true" 表示跟踪查看器 (trace.axd) 只用于宿主 Web 服务器

参考:WebConfig

WebConfig 详解的更多相关文章

  1. WebConfig配置文件详解

    今天看到博客园一位朋友整理的一个WebConfig配置文件详解,觉得不错,转载一下: <?xml version="1.0"?> <!--注意: 除了手动编辑此文 ...

  2. WebConfig节点详解

    <!-- Web.config配置文件详解(新手必看) 花了点时间整理了一下ASP.NET Web.config配置文件的基本使用方法. 很适合新手参看,由于Web.config在使用很灵活,可 ...

  3. OutputCache属性详解(四)— SqlDependency

    目录 OutputCache概念学习 OutputCache属性详解(一) OutputCache属性详解(二) OutputCache属性详解(三) OutputCache属性详解(四)— SqlD ...

  4. ASP.NT运行原理和页面生命周期详解及其应用

    ASP.NT运行原理和页面生命周期详解及其应用 1. 下面是我画的一张关于asp.net运行原理和页面生命周期的一张详解图.如果你对具体不太了解,请参照博客园其他帖子.在这里我主要讲解它的实际应用.  ...

  5. [置顶] MVC输出缓存(OutputCache参数详解)

    1.学习之前你应该知道这些 几乎每个项目都会用到缓存,这是必然的.以前在学校时做的网站基本上的一个标准就是1.搞定增删改查2.页面做的不要太差3.能运行(ps真的有这种情况,答辩验收的时候几个人在讲台 ...

  6. MVC输出缓存(OutputCache参数详解)

    版权声明:本文为博主原创文章,未经博主允许转载随意. https://blog.csdn.net/kebi007/article/details/59199115 1.学习之前你应该知道这些 几乎每个 ...

  7. Asp.net中web.config配置文件详解(一)

    本文摘自Asp.net中web.config配置文件详解 web.config是一个XML文件,用来储存Asp.NET Web应用程序的配置信息,包括数据库连接字符.身份安全验证等,可以出现在Asp. ...

  8. 魔方Newlife.Cube权限系统的使用及模版覆盖详解

    讲人:大石头 时间:2018-11-14 晚上20:00 地点:钉钉群(组织代码BKMV7685)QQ群:1600800 内容:魔方Newlife.Cube权限系统的使用及模版覆盖详解 准备 源码地址 ...

  9. Web.config文件 详解

    一.认识Web.config文件Web.config 文件是一个XML文本文件,它用来储存 ASP.NET Web 应用程序的配置信息(如最常用的设置ASP.NET Web 应用程序的身份验证方式), ...

随机推荐

  1. .NET/ASP.NET 4.5 Bundle组件(捆绑、缩小静态文件)

    阅读目录: 1.开篇介绍 2.System.Web.Optimization 组件 3.System.Web.Optimization 组件基本原理 4.扩展自定义类型静态文件 1]开篇介绍 这篇文章 ...

  2. SQLServer中给表增加组合唯一约束

    将两个或者多个字段一起约束成一个唯一约束 alter table 表名 add constraint 约束名 unique (列名1,列名2)

  3. SQL Server 2012 学习笔记5

    1. 索引(Index) 索引是快速的定位和查找数据.索引分为: 聚集索引:唯一,默认主键,一般选取比较连贯的字段,聚集索引是物理排序. 非聚集索引: 并没有把数据物理排序,只是多了一个索引页(包括索 ...

  4. sql server 警报管理,实时监听数据库动向,运筹帷幄之中

    工作这么多年了,无论是身边的同学还是同事,发现只要搞程序员的都有一个通病---懒.懒到谁都不愿意加班,尤其是"义务"加班.即使大家都不愿意加班,但是很多时候项目赶着上线或者上线之后 ...

  5. IIS 500.19 错误

    HTTP 错误 500.19 - Internal Server Error 错误代码 0x80070021 配置错误 不能在此路径中使用此配置节.如果在父级别上锁定了该节,便会出现这种情况.锁定是默 ...

  6. WIN 程序员的 Linux 互斥类

    作者:黄山松,发表于cnblogs:http://www.cnblogs.com/tomview/ 对于一个 win 的程序员,要把在 win 下的程序移植到 linux 下,需要把一些平台相关的功能 ...

  7. android中的数据存取-方式一:preference(配置)

    这种方式应该是用起来最简单的Android读写外部数据的方法了.他的用法基本上和J2SE(java.util.prefs.Preferences)中的用法一样,以一种简单. 透明的方式来保存一些用户个 ...

  8. 树莓派2 安装 win10Iot 和 Ubuntu mate

    注册博客账号已经2年多了.一直没写博文现在抽空写写. 写这篇博文是因为我之前在网上找了蛮多有关教程写的都不是很清晰.安装没成功.所以我写一下我根据网上找到的整理一下分享出来. 非专业只是业余玩玩.好了 ...

  9. 大话设计模式C++版——抽象工厂模式

    前面说过,简单工厂模式是最基础的一种设计模式,那以工厂命名的设计模式就是23种设计模式中最多的一种,他们一脉相承,一步一步进化而来,这里就是其中的最后一种——抽象工厂模式(Abstract Facto ...

  10. LCIS(最长公共上升子序列)Vijos1264神秘的咒语

    描述 身为拜月教的高级间谍,你的任务总是逼迫你出生入死.比如这一次,拜月教主就派你跟踪赵灵儿一行,潜入试炼窟底. 据说试炼窟底藏着五行法术的最高法术:风神,雷神,雪妖,火神,山神的咒语.为了习得这些法 ...