Web.config文件配置
ASP.NET提供配置文件Web.config,它是基于XML格式的纯文本文件,可存储Web应用程序配置参数的文件。它决定了所在目录及其子目录的配置信息,并且子目录下的配置信息覆盖其父目录的配置。由于XML中的元素和属性名区分大小写,Web.config中的状态和属性值也区分大小写。
19:30 2013-5-16
1.Web.config基本结构
Web.config包含于整个站点的值。它是一个XML文件,位于根目录下,其节点主要包含3个方面的信息:
1)应用程序配置。用于设置在开发阶段或部署之后可以使用的功能,位于<appsettings>...</appsettings>之间。
2)连接字符串。用于从数据源读取数据或向数据源写入数据时连接数据源。位于<connectionString>...</connectionString>之间。
3)System.Web和System.Net设置。包含其他所有信息,位于<System.Web>...</System.Web>之间。
System.Web设置有可以分为很多子类型,包括如下几种:
①HTTP Module,将页面指向其他页面以便执行代码。
②调试例程,在编译时应该启动这些例程。
③身份验证技术。
④角色管理器,打开或者关闭。
⑤匿名识别,允许或者拒绝。
⑥错误处理设置。
⑦SiteMap文件数据,用于导航和菜单。
⑧Profile数据,用于识别用户。
⑨针对简单邮件传输协议(Simplified Mail Transfer Protocol,SMTP)的电子邮件设置。
⑩命名空间的定义,表示标识对象在更大的对象内部处于什么位置(在WroxUnited中没有用到)
System.Web值包含完成一个目标的设置,一组用于发送电子邮件的值。
2.常量的配置
1)<compilation>元素的配置 在<compilation>配置节中,defaultLanguage属性表示应用程序的默认语言;debug属性表示用用程序能否被调试,它的值为一个布尔类型(bool-->true/false)的值。在应用程序的开发过程中,把debug属性设置为true。而当应用程序一旦放到服务器上运行时,一般发debug属性设为false,即禁止调试该应用程序,这样可以提高站点的安全性和程序的运行性能。下面为<compilation>配置节的一个具体配置:
写法一:
<compilation defaultLanguage="C#" debug="true"/>
写法二:
<compilation defaultLanguage="C#"(该配置要求该系统默认语言为C#) debug="true"(允许系统进行调试)></compilation>
2)<customErrors>元素的配置 在处理数据库时候,控制用户能查看什么的内容是非常重要。如果让应用程序生成默认的错误屏幕,给用户显示字段名和堆栈信息,就给用户提供了攻击应用程序的工具,从而危害数据库的安全。保护程序的一种方式是使用定制的错误页面,可以设置ASP.NET在出现问题时将用户重定向到一个定制的错误页面,用它替代默认的错误信息;实际上可以建立多个页面,为特定的错误指定不同的页面。在<customErrors>配置节中,可以定义错误的重定向页面的链接地址与错误处理的模式。自定义错误处理的模式有On、Off和RemoteOnly三种,它们的意义如下:
①"On"表示始终显示自定义(友好的)信息。
②"Off"表示始终显示详细的ASP.NET错误信息。
③"RemoteOnly"表示只对不在本地Web服务器上运行的用户显示自定义(友好的)信息。处于安全目的,建议使用此设置,以便不向远程客户端显示应用程序的详细信息。
下面为<customErrors>配置节的一个具体配置:
<customErrors mode="RemoteOnly">//RemoteOnly属性表示远程用户看到的是友好页面missingPage.aspx,而管理员看到的则是错误的详细信息。
<error statusCode="404" redirect="missingPage.aspx"/>
</customErrors>
3)<sessionState>元素的配置 <sessionState>配置节主要配置应用程序的Session对象的处理信息。如Session对象的运行模式、有效时间、Cookies是否有效等等。
<sessionState>配置节的重用配置方法如下:
<sessionState mode="InPro"(指示在本地存储会话状态) stateConnectionString(指的是远程存储会话状态的服务器名称)="TCPIP=127.0.0.1:42424" sqlConnectionString(端口与存储会话状态的SQL Server连接字符串)="data source=127.0.0.1;Trusted_Connection=yes" cookies(Cookie,有时也用其复数形式Cookies,指某些网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据(通常经过加密))="false" timeout="20"(表示如果用户20分钟为操作网页,Session自动失效)/>
4)<httpRuntime>元素的配置 在ASP.NET应用程序开发中,有时候需要限制客户上传文件的大小。在<httpRuntime>配置节中可以实现次功能,系统默认上传文件的大小为4M(4096KB)左右。maxRequestLength属性指示ASP.NET支持的最大文件上传大小。该限制可用于防止因用户将大量文件传递到该服务器而导致的拒绝服务攻击。制定的大小一KB为单位,默认值为4M(4096KB)。executionTimeout属性表示在被ASP.NET自动关闭前,允许执行请求的最大秒数。
5)<pages>元素的配置 <pages>配置节只要处理请求页面的一些信息,如请求时候是否验证该页面的合法性、是否使用缓存和是否使用ViewState状态等。举个很简单的例子:当我们在页面上的文本框中输入脚本(Javascript/Vbscript)的时候,系统会自动检测该页面,如果检测到该页面为危险页面时候会产生警告信息,从而导向错误页面。有时候开发人员希望自己来处理用户的输入,而不需要系统自动处理,此时可以把validateRequest属性的值设为False,此时系统就不再自动验证页面的危险性和合法性。ASP.NET应用程序的<pages>配置节的常用配置方法如下:
<pages buffer(可选的 Boolean 特性。指定 URL 资源是否使用响应缓冲。默认值为 True)="true" enableSessionState(可选的 String 特性。为配置文件范围内的资源指定会话状态要求。enableSessionState 特性可以为下列可能值之一。 默认值为 True。值 说明 False 指示会话状态已禁用。 ReadOnly 表明会话状态不可写。 True 指示会话状态已启用。)="true" autoEventWireup(可选的 Boolean 特性。指定是否自动启用页事件。 当出现自动事件连接时就是如此,这意味着系统将自动连接特定签名的方法(如 Page_Load)。 有关更多信息,请参见 ASP.NET Server Control Event Model。默认值为 True。)="true" smartNavigation(可选的 Boolean 特性。指定是否启用智能导航。 智能导航需要 Microsoft Internet Explorer 5.5 版或更高版本。 启用智能导航时,用户会体验到下列好处:①消除了导航时出现的闪烁现象。②滚动位置在不同页之间保持。③元素焦点在不同页之间保持。④浏览器的历史记录中只保留页的最近一次状态。此特性是 .NET Framework 2.0 中新引入的特性,但现已弃用,改用 maintainScrollPositionOnPostBack 特性。默认值为 False。)="true"/>
6)<authentication>元素的配置 <authentication>配置节主要处理站点、应用程序或页面的身份验证方式。在ASP.NET中,验证方式主要有一下几种:
①Windows:Windows系统验证方式。
②Forms:窗体验证方式。
③Passport:.NET Passport验证方式。
④None:不进行验证。
ASP.NET应用程序的<authentication>配置节的常用配置方法如下:
<authentication mode="Windows"/>
7)<globalization>元素的配置 <globalization>配置节主要配置站点的全球化信息,如网页显示的编码方式等,ASP.NET应用程序的<globalization>配置节的常用配置方法如下:
<globalization requestEncoding="UTF-8" responseEncoding="UTF-8"/>
3.应用程序设置案例:
<?xml version="1.0"?>
<!--
注意: 除了手动编辑此文件以外,您还可以使用
Web 管理工具来配置应用程序的设置。可以使用 Visual Studio 中的
“网站”->“Asp.Net 配置”选项。
设置和注释的完整列表在
machine.config.comments 中,该文件通常位于
\Windows\Microsoft.Net\Framework\v2.x\Config 中
-->
<configuration>
<appSettings>
<add key="DSN" value="server=2012-20130315AP;uid=sa;pwd=xushouwei;database=example"/>
</appSettings>
<connectionStrings/>
<system.web>
<!--
设置 compilation debug="true" 将调试符号插入
已编译的页面中。但由于这会
影响性能,因此只在开发过程中将此值
设置为 true。
-->
<compilation debug="true"/>
<!--
通过 <authentication> 节可以配置 ASP.NET 使用的
安全身份验证模式,
以标识传入的用户。
-->
<authentication mode="Windows"/>
<!--
如果在执行请求的过程中出现未处理的错误,
则通过 <customErrors> 节可以配置相应的处理步骤。具体说来,
开发人员通过该节可以配置
要显示的 html 错误页
以代替错误堆栈跟踪。
<customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">
<error statusCode="403" redirect="NoAccess.htm" />
<error statusCode="404" redirect="FileNotFound.htm" />
</customErrors>
-->
</system.web>
</configuration>
4.配置文件的继承关系
ASP.NET应用程序可以拥有多个配置文件,而且配置文件名称都是Web.config。这些配置文件可以出现在ASP.NET Web应用程序服务器上的多个目录中。每个Web.config文件都将配置设置应用于它自己的目录和它所有的子目录。子目录中的配置文件可以提供除从父目录继承的配置信息以外的配置信息,并可以重写或修改父目录中定义的设置。名为%systemroot%\Microsoft.NET\Framework\V版本号\CONFIG\Machine.config定义了整个Web服务器的默认配置。machinem.config文件只能有一个,但可以有多个Web.config文件。machinem.config文件包含ASP.NET所需要的机器特定配置信息,应用程序级的Web.config文件从machinem.config文件中继承配置。Web.config文件中与machinem.config冲突的配置讲覆盖继承的配置;每个目录可以包含Web.config文件,该文件的配置可以继承或覆盖应用程序级的配置。
19:30 2013-5-16