现在的位置: 首页 > 综合 > 正文

ASP.NET中的Web.config应用程序配置文件简介

2013年10月14日 ⁄ 综合 ⁄ 共 4682字 ⁄ 字号 评论关闭

 转贴:http://hi.baidu.com/raincloud_msn/blog/item/36f7201ff7269364f624e48d.html

 

Web.config文件是一个标准的XML文档,所有的配置信息都位于<configuration>标记内。<system.web>标记内则包含了核心ASP.NET配置设置。用户可以在Visual Studio.NET中打开Web.config来查看和编辑它的内容,这个文件中包含了大量的注释信息,用户可以参照学习。下面介绍几个常用的标记。

1. <appSettings>标记

这个标记用来配置自定义的应用程序设置,比如数据库连接字符串、文件路径或存在在应用程序.ini文件中的任何信息。用户可以使用System.Configuration.ConfigurationSettings类在代码中访问<appSettings>标记中指定的键/值对。

另外,用户还可以在Web.config文件的<appSettings>标记中使用file属性。这个属性指定了一个配置文件,该文件提供附加设置或者重写<appSettings>标记中指定的设置。当使用file属性指定配置文件时,必须要把<appSettings>作为根节点,而不是<configuration>

在下面的配置中,我们添加了一个连接字符串配置,配置名称为ConnString,值为“server=localhost;database=test;uid=testing;pwd=test;”

<appSettings>

<add key="ConnString" value="server=localhost;database=test;uid=testing;pwd=test;" />

</appSettings>
用户就可以在页面中使用下面的代码来访问新添加的设置。

ConfigurationSettings.AppSettings("ConnString");

remove子元素用来删除特定的设置;clear子元素用来删除包含它的appSettings中的所有设置。例如:

<appSettings>

<clear />

</appSettings>

2. <authentication><authorization>标记

这两个标记紧密相关,它们用来设置应用程序的安全性。

<authentication>标记用来定义应用程序使用的身份验证方法和参数。它包含一个mode属性和两个子标记(<forms><passport>)。mode属性用来控制应用程序的默认身份验证模式,共有4种模式。

Windows:将Windows验证指定为默认的身份验证模式。当使用以下任意形式的Microsoft Internet信息服务(IIS)身份验证时使用该模式:基本、简要、集成的Windows验证(MTLM/Kerberos)或证书。

Forms:将ASP.NET基于窗体的身份验证指定为默认的身份验证模式。

Passport:将Microsoft Passport身份验证指定为默认的身份验证模式。

None:不指定任何身份验证。只有匿名用户是预期的或者应用程序可以处理事件以提供其自身的身份验证。<forms>子标记用来为基于窗体的自定义身份验证配置ASP.NET应用程序。比如指定密码是明文还是使用散列算法进行加密,用来在浏览器请求之间维持认证的Cookie名字,用于未授权请求的登录URL,以及指定保护级别等。

<authorization>标记用来设置应用程序的授权策略,它控制对URL资源的客户端访问。在这个标记下存在两个子标记:<allow><deny>。其中,<allow>用来允许对资源的访问;<deny>用来拒绝对资源的访问。

在运行时,ASP.NET将在<authorization>标记中查找<allow><deny>标记,直到它找到适合特定用户的第一个访问规则。然后,它根据找到的第一项访问规则是<allow>还是<deny>规则,来允许或拒绝对URL资源的访问。Machine.config文件中的默认身份验证规则是<allow users="*" />,因此除非另行配置,否则在默认情况下会允许访问。

在下面的示例中,使用mode属性指定使用基于窗体的身份验证,并在<form>子标记中指定了传输来自客户端的登录信息的Cookie名称,以及当初始身份验证失败时所使用的登录页的名称。必须将<authorization>节包含在内才能要求所有用户进行Forms身份验证,本例中使用<deny users="?" />拒绝对站点的所有匿名用户访问。

<configuration>

<system.web>

<authentication mode="Forms">

<forms name-"401kApp" loginUrl="/login.aspx"/>

</authentication>

<authorization>

<deny users="?"/>

</authorization>

</system.web>

</configuration>

3. <customErrors>标记

这个标记用来配置自定义错误信息。例如:

<customErrors defaultRedirect="url" mode="On|Off|RemoteOnly">

<error statusCode="statuscode redirect="url"/>

</customErrors>

该标记中包含一个mode属性和一个可选属性defaultRedirectMode属性用来指定如何处理自定义错误,具有三个可选值。

On:指定启用自定义错误。如果未指定defaultRedirect,用户将看到一般性错误。

Off:指定禁用自定义错误。这时将始终显示ASP.NET的详细错误信息页面。

RemoteOnly:指定仅向远程客户端显示自定义错误,并且向本地主机显示ASP.NET错误。这是默认选项。
defaultRedirect
属性指定发生错误时钭显示的URL。如果未指定defaultRecirect,将显示一般性错误。URL可以是绝对路径,也可以是路径。相对URL是相对于指定了defaultRedirect URLWeb.config文件,而不是相对于发生了错误的Web页。以~开头的URL(例如~/ErrorPage.htm)表示指定的URL是相对于应用程序的根路径。

另外,<customError>标记中还包含一个<error>子标记,它用来定义自定义错误条件,并且用户可以使用它指定多个自定义错误条件。

下面给出了一个示例。

<configuration>

<system.web>

<customErrors defaultRedirect="GenericError.htm" mode="RemoteOnly">

<error statusCode="500" redirect="InternalError.htm"/>

</customErrors>

</system.web>

</configuration>

4. <identity>标记

这个标记用来控制Web应用程序的应用程序标识,它可以在任何级别(计算机、站点、应用程序、子目录或页)上声明。

这个标记中包含一个必选属性impersonate,它用来指定是否对每个请求使用客户端模拟。

<identity>标记还包含两个可选属性:userNamepassword。它们指定如果impersonate设置为true,则使用用户名和密码。userNamepassword以明文形式存储在配置文件,例如,通过在包含服务器的域上具有适当凭据的、已经过身份验证的用户来访问。为了增强安全性,<identity>标记支持在注册表中存储加密userNamepassword属性。凭据必须是用Windows 2000Windows XP数据保护APIDPAPI)加密函数加密的REG_BINARY格式。要加密用户名和密码,并将它们存储在注册表中,请如下设置userNamepassword

userName= "registry:HKLM/Software/AspNetProcess,Name"

password= "registry:HKLM/Software/AspNetProcess,Pwd"

字符串中位于关键字registry之后和逗号之前的部分,表示ASP.NET打开的注册表项的名称。逗号之后的部分包含一个字符串值的名称,ASP.NET从此名称中讨取凭据。必须有逗号,并且凭据必须存储在HKLM配置单元中。

在下面的示例中将客户端标识模拟设置为true

<configuration>

<system.web>

<identity impersonate="true"/>

</system.web>

</configuration>

在下面的示例中指定将加密的用户名和密码存储在注册表中用户定义的项AspNetIdentity下。

<configuration>

<system.web>

<identity>

userName= "registry:HKLM/Software/AspNetIdentity,Name"

password= "registry:HKLM/Software/AspNetIdentity,Pwd"

</identity>

<system.web>

</configuration>

5. <sessionState>标记

这个标记为当前应用程序配置会话状态设置。该标记中包含以下属性(其中,mode为必选属性,其他为可选属性)。

Mode:该属性指定在哪里存储会话状态。可选的已发值有Off(未启用会话状态)、Inproc(在本地存储会话状态)、StateServer(在远程计算机上存储会话状态)和SQLServer(在SQL Server上存储会话状态)。

Cookieless:该属性指定是否使用Cookie。默认值为false,表示使用Cookie

Timeout:该属性指定在放弃一个会话前,该会话可以处于空闲状态的分钟数。默认值为20

stateConnectionString:该属性指定远程存储会话状态的服务器名称和端口。例如“tcpip=127.0.0.1:42424”。当modeStateServer时该属性是必需的。

sqlConnectionString:该属性为SQL Server指定连接字符串。例如“data source=localhost;Integrated Security=SSPI;Initial Catalog=northwind”。当modeSQL Server时该属性是必需的。

stateNetWorkTimeout:该属性在wgetStateServer模式存储会话状态时,指定在放弃会话之前,Web服务器和状态服务器之间的TCP/IP网络连接空闲的时间(以秒为单位)。默认值为10

在下面的示例中指定在本地存储会话状态,不使用Cookie,并且会话超时时间为20分钟。

<configuration>

<system.web>

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

</sessionState>

</system.web>

</configuration>

6. <trace>标记

抱歉!评论已关闭.