转自:HKbrain http://hi.baidu.com/hkbrian/blog/item/f66be1a3d88d03a5caefd03b.html

Web.config文件是一个XML文本文件,它用来储存 ASP.NET Web 应用程序的配置信息(如最常用的设置ASP.NET Web 应用程序的身份验证方式),它可以出现在应用程序的每一个目录中。当你通过.NET新建一个Web应用程序后,默认情况下会在根目录自动创建一个默认的
Web.config文件,包括默认的配置设置,所有的子目录都继承它的配置设置。如果你想修改子目录的配置设置,你可以在该子目录下新建一个Web.config文件。它可以提供除从父目录继承的配置信息以外的配置信息,也可以重写或修改父目录中定义的设置。

在运行时对Web.config文件的修改不需要重启服务就可以生效(注:<processModel> 节例外)。当然Web.config文件是可以扩展的。你可以自定义新配置参数并编写配置节处理程序以对它们进行处理。

asp.net网站IIS启动的时候会加载配置文件中的配置信息,然后缓存这些信息,这样就不必每次去读取配置信息。在运行过程中asp.net应用程序会监视配置文件的变化情况,一旦编辑了这些配置信息,就会重新读取这些配置信息并缓存。

当我们要读取某个节点或者节点组信息时,是按照如下方式搜索的:
(1)如果在当前页面所在目录下存在web.config文件,查看是否存在所要查找的结点名称,如果存在返回结果并停止查找。
(2)如果当前页面所在目录下不存在web.config文件或者web.config文件中不存在该结点名,则查找它的上级目录,直到网站的根目录。
(3)如果网站根目录下不存在web.config文件或者web.config文件中不存在该节点名则在%windir%/Microsoft.NET/Framework/v2.0.50727/CONFIG/web.config文件中查找。
(4)如果在%windir%/Microsoft.NET/Framework/v2.0.50727/CONFIG/web.config文件中不存在相应结点,则在%windir%/Microsoft.NET/Framework/v2.0.50727/CONFIG/machine.config文件中查找。
(5)如果仍然没有找到则返回null。
所以如果我们对某个网站或者某个文件夹有特定要求的配置,可以在相应的文件夹下创建一个web.config文件,覆盖掉上级文件夹中的web.config文件中的同名配置即可。这些配置信息的寻找只查找一次,以后便被缓存起来供后来的调用。在asp.net应用程序运行过程中,如果web.config文件发生更改就会导致相应的应用程序重新启动,这时存储在服务器内存中的用户会话信息就会丢失(如存储在内存中的Session)。一些软件(如杀毒软件)每次完成对web.config的访问时就会修改web.config的访问时间属性,也会导致asp.net应用程序的重启。

web.config文件详解

web.config配置文件(默认的配置设置)以下所有的代码都应该位于

<configuration>
<system.web>//节点主要是网站运行时的一些配置

</system.web>
</configuration>

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

<appSettings>

<!--允许上传的图片格式类型-->
<add key="ImageType" value=".jpg;.bmp;.gif;.png;.jpeg"/>
<!--允许上传的文件类型-->
<add key="FileType" value=".jpg;.bmp;.gif;.png;.jpeg;.pdf;.zip;.rar;.xls;.doc"/>
</appSettings>

<connectionStrings>
<!--SQL Server数据库配置-->
<add name="AspNetStudyConnectionString1" connectionString="Data Source=(local);Initial Catalog=AspNetStudy;User ID=sa;Password=sa"/>
</connectionStrings>
在代码中我们可以这么实例化数据库连接对象:
string connectionString = ConfigurationManager.ConnectionStrings["AspNetStudyConnectionString1"].ConnectionString;
//实例化SqlConnection对象
SqlConnection connection = new SqlConnection(connectionString);
这样做的好处是一旦开发时所用的数据库和部署时的数据库不一致,仅仅需要用记事本之类的文本编辑工具编辑connectionString属性的值就行了。

<authentication>
作用:配置 ASP.NET 身份验证支持(为Windows、Forms、PassPort、None四种)。该元素只能在计算机、站点或应用程序级别声明。<authentication> 元素必需与<authorization> 节配合使用。
示例:
以下示例为基于窗体(Forms)的身份验证配置站点,当没有登陆的用户访问需要身份验证的网页,网页自动跳转到登陆网页。

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

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

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

<authorization>
  <deny users="?"/>
</authorization>

注:你可以使用user.identity.name来获取已经过验证的当前的用户名;可以使用
web.Security.FormsAuthentication.RedirectFromLoginPage方法将已验证的用户重定向到用户刚才请求的页面.具体的实例请参考:
Forms验证 http://www.fanvb.net/websample/dataauth.aspx

<compilation>
作用:配置 ASP.NET 使用的所有编译设置。默认的debug属性为“True”. 即允许调试。在程序编译完成交付使用之后应将其设为False。

<customErrors>
作用:为 ASP.NET 应用程序提供有关自定义错误信息的信息。它不适用于 XML Web services 中发生的错误。
示例:当发生错误时,将网页跳转到自定义的错误页面。

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

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

<httpRuntime>
作用:配置 ASP.NET HTTP 运行库设置。该节可以在计算机、站点、应用程序和子目录级别声明。
示例:控制用户上传文件最大为4M,最长时间为60秒,最多请求数为100

<httpRuntime maxRequestLength="4096" executionTimeout="60" appRequestQueueLimit="100"/>

<pages>
作用:标识特定于页的配置设置(如是否启用会话状态、视图状态,是否检测用户的输入等)。<pages>可以在计算机、站点、应用程序和子目录级别声明。
示例:不检测用户在浏览器输入的内容中是否存在潜在的危险数据(注:该项默认是检测,如果你使用了不检测,一要对用户的输入进行编码或验证),在从客户端回发页时将检查加密的视图状态,以验证视图状态是否已在客户端被篡改。(注:该项默认是不验证)

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

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

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

注:
mode="InProc"表示:在本地储存会话状态(你也可以选择储存在远程服务器或SAL服务器中或不启用会话状态)
cookieless="true"表示:如果用户浏览器不支持Cookie时启用会话状态(默认为False)
timeout="20"表示:会话可以处于空闲状态的分钟数

<trace>
作用:配置 ASP.NET 跟踪服务,主要用来程序测试判断哪里出错。
示例:以下为Web.config中的默认配置:

<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主要节点配置总结相关推荐

  1. logback节点配置详解

    logback节点配置详解 一:根节点 <configuration></configuration> 属性 : debug : 默认为false ,设置为true时,将打印出 ...

  2. skynet给集群中的一个节点配置多个通道

    在skynet框架中使用cluster模式,经常有消息在节点之间传递.大部分情况,我们在节点A和节点B之间只需要建立一个连接通道,但是在有些时候我们希望让一些比较独立的业务能占用一条单独的通道进行处理 ...

  3. 第十四章:详解Jenkins节点配置

    2014-03-02:修正对于lable标签的理解.(1.532.1版本已经给出了官方解释) 2013-12-22:添加JNLP端口修改,修改了一些错误. Jenkins有个很强大的功能:分布式构建( ...

  4. The Things Network LoRaWAN Stack V3 学习笔记 2.5 LoRa节点配置接入

    前言 网关接入之后,再让节点接入.本篇笔记重点记录一些小坑,注意跳过. 小能手这段时间在学习 The Things Network LoRaWAN Stack V3,从使用和代码等角度对该 Stack ...

  5. 《Linux/UNIX OpenLDAP实战指南》——2.5 OpenLDAP单节点配置案例

    本节书摘来自异步社区<Linux/UNIX OpenLDAP实战指南>一书中的第2章,第2.5节,作者:郭大勇著,更多章节内容可以访问云栖社区"异步社区"公众号查看 2 ...

  6. Jenkins slave 节点配置

    准备工作 插件安装 SSH Build Agents,允许使用 SSH 协议的 Java 实现通过 SSH 启动代理. Jenkins master 节点机器 Jenkins slave 从节点机器 ...

  7. 24.neutron网络节点和计算节点配置

    配置网络节点: 网络节点需要安装的包: openstack-neutron.noarch openstack-neutron-openvswitch.noarch openvswitch.x86_64 ...

  8. webConfig中customErrors节点配置

    发布在远程计算机上的网站调试问题: 通常情况下我们会设置错误页,不让用户看到错误信息 这种WebConfig的配置方法是: <configuration><system.web> ...

  9. mysql管理节点_mysql8 参考手册-NDB群集管理节点配置参数

    本节中的清单提供了有关在配置NDB群集管理节点的文件[ndb_mgmd]或 [mgm]部分中 使用的参数的信息config.ini.有关每个参数的详细说明和其他附加信息,请参见 第22.3.3.5节& ...

最新文章

  1. DataBase 之 拉链表结构设计
  2. 干货 | AI 工程师必读,从实践的角度解析一名合格的AI工程师是怎样炼成的
  3. Zoom 袁征码农逆袭:8 次申请美国签证被拒,独闯硅谷成亿万富翁
  4. node.js之npm
  5. 忘记commit也会造成select查询的性能问题
  6. arc科学计算机在线应用使用,ArcMap字段计算器(Field Calculator)的妙用
  7. 我的Oracle 9i学习日志(11)--重做日志文件及练习
  8. Linux c语言 creat参数,C语言open和creat函数
  9. 《嵌入式 – GD32开发实战指南》第15章 低功耗(电源管理)
  10. PLC如何读取模拟量
  11. 血泪合集,uniapp超长实践精华总结~
  12. monthcalendar控件
  13. 浏览器 本地html 图片不显示,浏览网页图片无法显示怎么回事 网页图片显示不出来的解决方法...
  14. torch 显存管理
  15. 【报告分享】2021母婴行业白皮书-巨量引擎(附下载)
  16. 推荐几个程序员Mac m1max芯片笔记本软件
  17. macOS 切换python版本
  18. Holm–Bonferroni method
  19. 传说中的ARM架构与X86架构
  20. CTFHUB-技能树-WEB通关

热门文章

  1. 【面经】记一次字节跳动后端面试经历
  2. while 中 break 与 continue 的区别
  3. python列表用法大全
  4. Java大数据-Week2-Day3面向对象高级
  5. PHP设计渐变的效果,canvas渐变色:canvas如何实现渐变色的效果?
  6. 【python VS Code】调用自定义模块 ModuleNotFoundError: No module named XXX
  7. jquerymobile iscrollview
  8. Golang Hash MD4
  9. fpga数电基础之--------触发器
  10. git 远程仓库回滚