一、认识Web.config文件
Web.config
文件是一个
xml
文本文件,它用来储存
asp.NET Web
应用程序的配置信息(如最常用的设置
asp.NET Web
应用程序的身份验证方式),它可以出现在应用程序的每一个目录中。当你通过
.NET
新建一个
Web
应用程序后,默认情况下会在根目录自动创建一个默认的
Web.config
文件,包括默认的配置设置,所有的子目录都继承它的配置设置。如果你想修改子目录的配置设置,你可以在该子目录下新建一个
Web.config
文件。它可以提供除从父目录继承的配置信息以外的配置信息,也可以重写或修改父目录中定义的设置。
1.
配置节处理程序声明
特点:
位于配置文件的顶部,包含在
<configSections>
标志中。
2.
特定应用程序配置
特点
:
位于
<appSetting>
中。
可以定义应用程序的全局常量设置等信息
.
3.
配置节设置
4.
配置节组
特点
:
用
<sectionGroup>
标记,可以自定义分组,可以放到
<configSections>
内部或其它
<sectionGroup>
标记的内部
.
(
二
).
配置节的每一节
1.<configuration>
节
根元素,其它节都是在它的内部
.
2.<appSetting>
节
此节用于定义应用程序设置项。对一些不确定设置,还可以让用户根据自己实际情况自己设置
用法
:
I.
<appSettings>
<add key="Conntction" value="server=192.168.85.66;userid=sa;password=;database=Info;"/>
<appSettings>
定义了一个连接字符串常量,并且在实际应用时可以修改连接字符串,不用修改程式代码
.
II.<appSettings>
<add key="ErrPage" value="Error.aspx"/><appSettings>
定义了一个错误重定向页面
.
3.<compilation>
节
格式
:
<compilation
defaultLanguage="c#"
debug="true"
/>
IIdebug :
为
true
时,启动
aspx
调试;
为
false
不启动
aspx
调试,因而可以提高应用程序运行时的性能。
一般程序员在开发时设置为
true,
交给客户时设置为
false.
4.<customErrors>
节
格式
:
<customErrors
mode="RemoteOnly"
defaultRedirect="error.aspx"
<error statusCode="440" redirect="err440page.aspx"/>
<error statusCode="500" redirect="err500Page.aspx"/>
/>
I.mode :
具有
On,Off,RemoteOnly 3
种状态。
On
表示始终显示自定义的信息
; Off
表示始终显示详细的
asp.net
错误信息
; RemoteOnly
表示只对不在本地
Web
服务器上运行的用户显示自定义信息
.
II.defaultRedirect:
用于出现错误时重定向的
URL
地址
.
是可选的
III.statusCode:
指明错误状态码,表明一种特定的出错状态
.
IV. redirect:
错误重定向的
URL.
5.<globalization>
节
格式
:
<globalization
requestEncoding="utf-8"
responseEncoding="utf-8"
fileEncoding="utf-8"
/>
I.requestEncoding:
它用来检查每一个发来请求的编码
.
II.responseEncoding:
用于检查发回的响应内容编码
.
III.fileEncoding:
用于检查
aspx,asax
等文件解析的默认编码
.
6.<sessionState>
节
格式
:
<sessionState
mode="InProc"
stateConnectionString="tcpip=127.0.0.1:42424"
sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes"
cookieless="false"
timeout="20"
/>
I.mode:
分为
off,Inproc,StateServer,SqlServer
几种状态
mode = InProc
存储在进程中
特点:具有最佳的性能,速度最快
,
但不能跨多台服务器存储共享
.
mode = "StateServer"
存储在状态服务器中
特点
:
当需要跨服务器维护用户会话信息时,使用此方法。但是信息存储在状态服务器上,一旦状态服务器出现故障,信息将丢失
. mode="SqlServer"
存储在
sql server
中
特点
:
工作负载会变大,但信息不会丢失
.
III.sqlConnectionString:
当用会话状态数据库时,在这里设置连接字符串
IV. Cookieless:
设置为
true
时,表示不使用
cookie
会话状态来标识客户;
否则,相反
.
V. TimeOut:
用来定义会话状态存储的时间,超过期限,将自动终止会话
.
7.<authentication>
节
格式
:
<authentication mode="Forms">
<forms name=".ASPXUSERDEMO" loginUrl="Login.aspx" protection="All" timeout="30"/>
</authentication>
<authorization>
<deny users="?"/>
</authorization>
I.Windows:
使用
IIS
验证方式
II.Forms:
使用基于窗体的验证方式
III.Passport:
采用
Passport cookie
验证模式
IV.None:
不采用任何验证方式
里面内嵌
Forms
节点的属性涵义
:
I.Name:
指定完成身份验证的
Http cookie
的名称
.
II.LoginUrl:
如果未通过验证或超时后重定向的页面
URL
,一般为登录页面,让用户重新登录
III.Protection:
指定
cookie
数据的保护方式
.
可设置为
: All None Encryption Validation
四种保护方式
a. All
表示加密数据,并进行有效性验证两种方式
b. None
表示不保护
Cookie.
c. Encryption
表示对
Cookie
内容进行加密
d. validation
表示对
Cookie
内容进行有效性验证
IV. TimeOut:
指定
Cookie
的失效时间
.
超时后要重新登录
.
在运行时对
Web.config
文件的修改不需要重启服务就可以生效(注:
<processModel>
节例外)。当然
Web.config
文件是可以扩展的。你可以自定义新配置参数并编写配置节处理程序以对它们进行处理。
web.config
配置文件(默认的配置设置)以下所有的代码都应该位于
<configuration>
<system.web>
和
</system.web>
</configuration>
1
、
<authentication>
节
作用:配置
asp.NET
身份验证支持(为
Windows
、
Forms
、
PassPort
、
None
四种)。该元素只能在计算机、站点或应用程序级别声明。
< authentication>
元素必需与
<authorization>
节配合使用。
示例:
以下示例为基于窗体(
Forms
)的身份验证配置站点,当没有登陆的用户访问需要身份验证的网页,网页自动跳转到登陆网页。
<authentication mode="Forms" >
<forms loginUrl="logon.aspx" name=".FormsAuthCookie"/>
</authentication>
其中元素
loginUrl
表示登陆网页的名称,
name
表示
Cookie
名称。
2
、
<authorization>
节
作用:控制对
URL
资源的客户端访问(如允许匿名用户访问)。此元素可以在任何级别(计算机、站点、应用程序、子目录或页)上声明。必需与
<authentication>
节配合使用。
示例:以下示例禁止匿名用户的访问
<authorization>
<deny users="?"/>
</authorization>
注:你可以使用
user.identity.name
来获取已经过验证的当前的用户名;可以使用
web.Security.FormsAuthentication.RedirectFromLoginPage
方法将已验证的用户重定向到用户刚才请求的页面
.
具体的
3
、
<compilation>
节
作用:配置
asp.NET
使用的所有编译设置。默认的
debug
属性为“
True
”
.
在程序编译完成交付使用之后应将其设为
False
(
Web.config
文件中有详细说明,此处省略示例)
4
、
<customErrors>
示例:当发生错误时,将网页跳转到自定义的错误页面。
<customErrors defaultRedirect="ErrorPage.aspx" mode="RemoteOnly">
</customErrors>
其中元素
defaultRedirect
表示自定义的错误网页的名称。
mode
元素表示:对不在本地
Web
服务器上运行的用户显示自定义
(
友好的
)
信息。
5
、
<httpRuntime>
节
示例:控制用户上传文件最大为
4M
,最长时间为
60
秒,最多请求数为
100
<httpRuntime maxRequestLength="4096" executionTimeout="60" appRequestQueueLimit="100"/>
6
、
<pages>
作用:标识特定于页的配置设置(如是否启用会话状态、视图状态,是否检测用户的输入等)。
<pages>
可以在计算机、站点、应用程序和子目录级别声明。
示例:不检测用户在浏览器输入的内容中是否存在潜在的危险数据(注:该项默认是检测,如果你使用了不检测,一要对用户的输入进行编码或验证
)
,在从客户端回发页时将检查加密的视图状态,以验证视图状态是否已在客户端被篡改。
(
注:该项默认是不验证)
<pages buffer="true" enableViewStateMac="true" validateRequest="false"/>
7
、
<sessionState>
作用:为当前应用程序配置会话状态设置(如设置是否启用会话状态,会话状态保存位置)。
示例:
<sessionState mode="InProc" cookieless="true" timeout="20"/>
</sessionState>
注:
mode="InProc"
表示:在本地储存会话状态(你也可以选择储存在远程服务器或
SAL
服务器中或不启用会话状态)
cookieless="true"
表示:如果用户浏览器不支持
Cookie
时启用会话状态
(
默认为
False
)
timeout="20"
表示:会话可以处于空闲状态的分钟数
8
、
<trace>
示例:以下为
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
服务器
自定义
Web.config
文件配置
自定义
Web.config
文件配置节过程分为两步。
2.
是在
<configSections>
区域之后为声明的节做实际的配置设置。
示例:创建一个节存储数据库连接字符串
<configuration>
<configSections>
<section name="appSettings" type="System.Configuration.NameValueFileSectionHandler, System, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
</configSections>
<appSettings>
<add key="scon" value="server=a;database=northwind;uid=sa;pwd=123"/>
</appSettings>
<system.web>
......
</system.web>
</configuration>
访问
Web.config
文件
你可以通过使用
ConfigurationSettings.AppSettings
静态字符串集合来访问
Web.config
文件示例:获取上面例子中建立的连接字符串。例如:
protected static string Isdebug = ConfigurationSettings.AppSettings["debug"]
Web.config详解+asp.net优化(2)
打开某个应用程序的配置文件
Web.config
后,我们会发现以下这段:
< sessionState
mode="InProc"
stateConnectionString="tcpip=127.0.0.1:42424"
sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes"
cookieless="false"
timeout="20"
/>
< sessionState mode="Off|InProc|StateServer|SQLServer"
cookieless="true|false"
timeout="number of minutes"
stateConnectionString="tcpip=server:port"
sqlConnectionString="sql connection string"
stateNetworkTimeout="number of seconds"
/>
必须有的属性是:
属性
选项
描述
可选的属性是:
属性
选项
描述
Ø ture
使用
Cookieless
模式,
Ø false
使用
Cookie
模式,这是默认值,
stateConnectionString
设置将
session
信息存储在状态服务中时使用的服务器名称和端口号,例如:
"tcpip=127.0.0.1:42424”。当mode
的值是
StateServer
是,这个属性是必需的。
sqlConnectionString
设置与
sql server
连接时的连接字符串。例如
"data source= localhost;Integrated Security=SSPI;Initial Catalog=northwind"
。当
mode
的值是
SQLServer
时,这个属性是必需的。
stateNetworkTimeout
设置当使用
StateServer
模式存储
session
状态时,经过多少秒空闲后,断开
Web
服务器与存储状态信息的服务器的
tcp/IP
连接的。默认值是
10
秒钟。
在我们上面的
session
模型简介中,大家可以发现
session
状态应该存储在两个地方,分别是客户端和服务器端。客户端只负责保存相应网站的
SessionID
,而其他的
session
信息则保存在服务器端。在
asp
中,客户端的
SessionID
实际是以
Cookie
的形式存储的。如果用户在浏览器的设置中选择了禁用
Cookie
,那末他也就无法享受
session
的便利之处了,甚至造成不能访问某些网站。为了解决以上问题,在
asp.NET
中客户端的
session
信息存储方式分为:
Cookie
和
Cookieless
两种。
找到当前
Web
应用程序的根目录,打开
Web.Config
文件,找到如下段落:
< sessionState
mode="InProc"
stateConnectionString="tcpip=127.0.0.1:42424"
sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes"
本文介绍了Web.config文件的作用及其配置项,包括认证、授权、编译设置等,并深入探讨了session状态的配置方法。
4014

被折叠的 条评论
为什么被折叠?



