默认情况下,Visual Studio创建的Web应用程序都会自动具有Web.config文件。Web.config是基于XML的Web配置文件,用于指导CLR处理绑定请求、程序集探查以及其他运行时细节。

配置内容被置于Web.config文件中的标记<configuration></configuration>之间。

格式:

<configuration>
    配置内容…
</configuration>

但也不必强制Web应用程序必须包含Web.config文件。如果没有这个文件,网站就会.NET安装路径中maching.config文件记录的内容授予默认Web相关配置。

一. Web.config文件的元素

元素 描述
<appSetting> 用于构建自定义 键、值对,可以使用ConfigurationManager类型以编程方式读入内存使用。
<authentication> 用于定义Web应用程序的授权模式。
<authorization> 用于定义哪些用户可以访问Web服务器上的哪些资源。
<connectionStrings> 用于保存网站中外部的连接字符串。
<customError> 用于告诉运行库如何显示在Web应用程序工作时发生的异常。
<gloablization> 用于为Web应用程序配置全局化设置。
<httpHandlers> 添加或移除HTTP处理程序。
<httpModules> 添加或移除HTTP模块。
<httpRuntime> 控制HTTP请求的处理。
<namesapces> 用于列举所有需要包含的命名空间。
<pages> 设置全局的网页默认属性。
<processModel> 控制工作者进程的行为方式。
<sessionSate> 用于控制会话状态数据如何以及在何处被.NET运行库存储。
<trace> 用于为Web应用程序启用(或禁用)跟踪支持。
<trust> 选择使用的信任等级。
<webServices> 指定Web服务的协议和范围。

二. 元素属性解读

1. <trance>启用跟踪

<trace>元素的特性:

特性 描述
enabled 指定是否作为一个整体的应用程序启用跟踪(默认设定值为false)。
localOnly 指明跟踪信息仅在宿主Web服务器上可见,而在远端客户机上不可见。(默认为true)
pageOutput 指定应该如何查看跟踪输出。
requestLimit 指定将保存在服务器上的跟踪请求的数量,默认值为10.如果达到极限,跟踪就自动禁用。
traceMode 指明跟踪信息以其被处理的顺序显示。默认为SortByTime,但也可进行配置使得它按照种类排序。

如下:

<trace enabled = "true | false"
    localOnly = "true | false"
    pageOutput = "true| false"
    requestLimit = "integer"
    traceMode = "SortByTime | SortByCategory" />

2. <customErrors>自定义错误输出:

<customErrors>属性的特性:

属性 描述
mode 具有On、Off、RemoteOnly 3种状态。On表示始终显示自定义的信息;Off表示始终显示详细的asp.net错误信息;RemoteOnly表示只对不在本地Web服务器上运行的用户显示自定义信息。
defaultRedirect 用于出现错误时重定向的URL地址。
statusCode 指明错误状态码,表明一种特定的出错状态。
redirect 错误重定向的URL。

如下:

<customErrors defaultRedirect="url" mode="On|Off|RemoteOnly">
    <error statusCode="statusCode" redirect="url" />
</customErrors>

实例:

<customErrors defaultRedirect="error.html" mode="On">
    <error statusCode="404" redirect="404.html" />
</customErrors>

3. <sessionSate>存储状态

<sessionSate>属性的特性:

属性 描述
mode 分为off、Inproc、StateServer、SqlServer几种状态。
stateConnectionString 指定ASP.NET应用程序存储远程会话状态的服务器名,默认为本机。
sqlConnectionString 当用会话状态数据库时,在这里设置连接字符串。
Cookieless 设置为true时,表示不使用cookie会话状态来标识客户。
TimeOut 用来定义会话状态存储的时间,超过期限,将自动终止会话。

如下:

<sessionSate mode="InProc" stateConnectionString="tcpip=127.0.0.1:42424"  sqlConnectString="data source=127.0.0.1; Trusted_Connection=yes" 
cookieless="false" 
timeout="20" />

4. <globalization>全局化设置

<globalization>属性的特性:

属性 描述
requestEncoding 它用来检查每一个发来请求的编码。
responseEncoding 用于检查发回的响应内容编码。
fileEncoding 用于检查aspx,asax等文件解析的默认编码。

如下:

<globalization requestEncoding="utf-8" responseEncoding="utf-8" fileEncoding="utf-8" />

5. <authentication>身份验证

身份验证方式有:

身份验证方式 描述
Windows 使用IIS验证方式。
Forms 使用基于窗体的验证方式。
Passport 采用Passport cookie验证模式。
None 不采用任何验证方式。

里面内嵌Forms节点的属性有:

属性 描述
Name 指定完成身份验证的Http cookie的名称。
LoginUrl 如果未通过验证或超时后重定向的页面URL,一般为登录页面,让用户重新登录。
Protection 指定 cookie数据的保护方式。
TimeOut 指定Cookie的失效时间. 超时后要重新登录。

Protection属性可设置为以下四种保护方式:

保护方式 描述
All 表示加密数据,并进行有效性验证两种方式。
None 表示不保护Cookie。
Encryption 表示对Cookie内容进行加密。
validation 表示对Cookie内容进行有效性验证。

如下:

<authentication mode="Forms">
    <forms name=".ASPXUSERDEMO" loginUrl="Login.aspx" protection="All" timeout="30" />
    </authentication>
    <authorization>
    <deny users="?" />
</authorization>

6. <httpRuntime>控制HTTP请求处理

<httpRuntime>属性的特性:

属性 描述
maxRequestLength 用户上传文件的最大大小,单位为KB。
executionTimeout 响应的最长时长,单位为s。
appRequestQueueLimit 最多的请求个数。

如下:

<!-- 控制用户上传文件最大为4M,最长时间为60秒,最多请求数为100 -->
<httpRuntime maxRequestLength = "4096" executionTimeout = "60" appRequestQueueLimit = "100 "/>

如何读入Web.config中的元素配置

ConfigurationManager提供对客户端应用程序配置文件的访问接口。

由于Web.config文件是基于XML编写的,因此获取方式与常规的DOM操作类似。

譬如要获取:

<configuration>
<connectionStrings>
    <add name="textDB" providerName="System.Data.SqlClient" connectionString="server=127.0.0.1;database=textDB;uid=admin;pwd=admin"/>
  </connectionStrings>
</configuration>

方法一:

string myConn = System.Configuration.ConfigurationManager.ConnectionStrings["sqlConnectionString"].ConnectionString;

方法二:


string connString = System.Web.Configuration.WebConfigurationManager.ConnectionStrings["sqlConnectionString"].ToString();
本文作者:子匠_Zijor,转载请注明出处:http://www.dengzhr.com/others/backend/csharp/609