2.6.1 Web.config包含整个站点的设置
Web.config包含用于整个站点的值。它是一个XML文件,位于根目录下,其节点主要包含3个方面的信息:
●应用程序配置,用于设置在开发阶段或部署之后可以使用的功能。
●连接字符串,用于从数据源读取数据或向数据源写入数据时连接数据源。
●System.Web和System.Net设置,包含其他所有信息。
System.Web设置又可以分为很多子类型,包括(WroxUnited没有全部用到)如下几种:
●HTTP Module,将页面指向其他页面以便执行代码
●调试例程,在编译时应该启动这些例程
●身份验证技术
●角色管理器,打开或者关闭
●匿名识别,允许或拒绝
●错误处理设置
●SiteMap文件数据,用于导航和菜单
●Profile数据,用于标识用户
●针对Simplified Mail Transfer Protocol(SMTP,简单邮件传输协议)的电子邮件设置(在WroxUnited中没有用到)
●命名空间的定义,标识对象在更大的对象内部处于什么位置(在WroxUnited中没有用到)
System.net只包含完成一个目标的设置,一组用于发送电子邮件的值。
有两种方式修改这个文件的内容;第一种是在VWD手动编辑该文件,幸运的是,这样做并不是很复杂。另一种方式是使用ASP.NET Web Site Administration Tool,可以在VWD中启动这个工具。在VWD的主菜单中选择Website- >ASP.NET Configuration。一系列的对话框使得开发人员可以设置很多值,VWD将根据这些值修改Web.config文件而不用直接打开它。
下面关于Web.config文件结构的解释是以Wrox United站点的Web.config文件为例,从其顶部开始向下查看各个部分。如果打开该文件,则可以看到它的结构(带有开标记和闭标记,每个标记都有属性,有些还包含了子节点)和其他XML文件的结构是一样的。通过添加恰当的节点和属性,可以设置应用程序级别的配置。包含在特殊字符串<!--和-- >之间的文本被看作是注释,可以添加注释帮助其他用户理解文件每个部分的用途。
注意:
在VWD创建Web.config文件时,它将在其中包含很多注释,以便为每个部分的设置提供参考值。所有这些值包含在一个文本文件中,该文件位于C:\Windows\Microsoft.NET\Framework\v2.xxx\CONFIG\Web.config.comments。下面是Wrox United站点的Web.config文件的开始部分,如您在下载文件中所见。可以导入该文件以替换创建的站点中的默认Web.config文件:
<?xml version="1.0"? >
<!-- Note: As an alternative to hand editing this file you can use the web
admintool to configure settings for your
Application. Use the Website- >
Asp.Net Configuration option in Visual Studio.A full list of settings and
comments can be found in machine.config.commentsusually located in \Windows\
Microsoft.Net\Frameworks\v2.x\Config -- >
<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0" >
所有新的Web.config文件中默认都添加了3行代码。第一行包含了XML声明,指出Web.config文件遵守XML标准。下一个区域是一个很长的注释,提醒您可以使用管理工具而不是手动编辑代码。最后一个需要提及的内容是文件的根节点;<configuration >节点将包含所有子节点,这些子节点包含了与存储在站点中的内容相关的配置。
下一部分包含一个客户应用程序设置,在修改示例应用程序位于不同环境下的运行方式时这个设置很有用。<!--和-- >之间的内容是VWD为程序员提供的注释,不是实际设置的一部分。
<!--
Mode defines certain feature availability:
Full: No restrictions
Real: Runs as if a real site, without the view code and download links
-- >
<appSettings >
<add key="mode" value="Full" / >
</appSettings >
下一部分,即连接字符串部分,包含了与数据源相关的信息。这个字符串通常包含了身份验证信息,开发人员可以使用这个信息将代码与保存在数据库中的数据连接起来。第7章将详细讨论连接字符串。目前只需注意到在连接字符串部分可以有一个或多个添加字符串的标记:
<!--
define the connection string to the database
-- >
<connectionStrings >
<add name="WroxUnited"
connectionString="Data Source=.\SQLEXPRESS;
AttachDbFilename=|DataDirectory|WroxUnited.mdf;
Integrated Security=True;User Instance=True"/ >
</connectionStrings >
注意connectionString属性的字符串值有换行,这是由于页面宽度所限。在实际情况下,这些代码应该位于同一行上。
在连接字符串之后,其他设置都位于<system.web >标记内。这些设置可以按照任意顺序排列;下面首先讨论httpModules设置。这个值使得站点可以集中处理用户所选择的主题风格,而不需要在页面中添加代码。第5章讨论主题风格,虽然这里没有详细讨论HttpModule,但代码的注释是很到位的。
<system.web >
<httpModules >
<add name="Page" type="Wrox.Web.GlobalEvents.ThemeModule" / >
</httpModules >
接下来在System.Web内的是编译(compilation)值。如果将其设置为true(如下例所示),则ASP.NET 2.0将把在编译页面期间发现的问题都输出到该页面上。这个功能在开发站点时很有用,但在部署站点之前应将其设置为false:
<system.web >
<compilation debug="true" >
</compilation >
Wrox United声明了3个站点级别的安全设置:身份验证、角色和配置文件。第4章和第11章将详细讨论这3个功能。下面显示的Web.config片断让您预览一下将要学习编写的内容。注意这些设置是如何为用户指定登录页面(Default.aspx)并打开角色管理器(Role Manager)的。这些内容同样也将在第4章和第11章中详细讨论。为了节省篇幅,下面的代码没有列出VWD为程序员提供的注释。另外,在WroxUnited站点的web.config文件的第二部分和第三部分设置之间有一个中断,其中插入的是其他设置。
<authentication mode="Forms" >
<forms loginUrl="Default.aspx" ></forms >
</authentication >
<roleManager enabled="true"/ >
<anonymousIdentification enabled="true"/ >
...
<profile enabled="true" >
<properties >
<add name="MemberName"/ >
<add name="Name"/ >
...
<add name="Cart" serializeAs="Binary" type="
Wrox.Commerce.ShoppingCart"
allowAnonymous="true"/ >
</properties >
</profile >
下一个要查看的部分与错误处理有关,错误处理能够影响站点的日常运行。第15章将详细讨论错误处理,但这里简单介绍一下,可以设置ASP.NET在出现问题时将用户
重定向到一个定制的错误页面。出现错误时所显示的页面由Web.config文件中的defaultRedirect设置指定,如下所示:
<!-- The <customErrors > section enables configuration of what to do if/when
an
unhandled error occurs during the execution of a request. Specifically, it
enables developers to configure html error pages to be displayed in place
of a error
stack trace. -- >
<customErrors mode="RemoteOnly" >
<error statusCode="404" redirect="missingPage.aspx"/ >
</customErrors >
因此,例如,如果数据库服务器因为掉电而关闭,站点的用户并不需要知道这个详细信息,但他们希望问题尽快解决,所以向他们显示“对不起,站点出现一个问题—— 我们正努力排查。服务将很快恢复正常”这样的信息就足够了。而本地管理员则需要知道出了什么问题,以便对其进行处理并尽快恢复运行!这个示例中的RemoteOnly属性表示远程用户看到的是友好页面,而管理员看到的则是错误的详细信息。
System.Web的最后一部分设置指定包含站点地图的文件,站点地图是所有页面的一个索引,同时它表明各个页面之间的关系。ASP.NET 2.0还需要指定用于站点地图的提供商或阅读工具。
<!-- Redefine the Site Map Provider, to add the security trimming
Attribute,
which is off by default -- >
<siteMap defaultProvider="AspXmlSiteMapProvider" enabled="true" >
<providers >
<clear/ >
<add name="AspXmlSiteMapProvider"
type="System.Web.XmlSiteMapProvider,
System.Web,
Version=2.0.3600.0,
Culture=neutral,
PublicKeyToken=b03f5f7f11d50a3a"
siteMapFile="web.sitemap"
securityTrimmingEnabled="true"/ >
</providers >
</siteMap >
最后一组设置位于system.net内。虽然在WroxUnited应用程序中没有显式用到这些设置,但可以使用它们在用户忘记口令并请求通过电子邮件将口令发送给用户本人的时候发送自动产生的电子邮件。无论电子邮件是怎么产生的,开发人员必须以如下方式在Web.config中声明SMTP(Simplified Mail Transfer Protocol,简单邮件传输协议):
<system.net >
<mailSettings >
<!-- these settings define the mail server settings from: the user name
from which the email is sent - this is the Application that is sending
the message host:the name of your mail server userName: the name the
Application will use to loginto the mail server password: the password
for the above user name
-- >
<smtp from="admin@your-domain.com" >
<network host="your-mail-server-name"
userName="your-user-name"
password="your-password" / >
</smtp >
</mailSettings >
</system.net >
最后,和所有的XML文件一样,每个开标记都有一个对应的闭标记,所以该文件以如下代码作为结束:
</system.web >
</configuration >
Web.config包含了站点级别的设置,所有其他页面都可以参考这些设置。这使得开发人员可以免于在每个需要这些设置的文件中重复设置相同的信息,而且只需在一个地方进行修改。
在本书的后续部分,将为站点的页面添加更多的功能,包括添加处理各种事件的代码,每个页面都会产生这些事件。但是,与开发人员不愿意在每个页面中指定相同的设置一样,如果需要使多个页面具有相同的行为,那就需要找到一种共享代码的方式。在Web.config中没有可执行的代码—— 因此需要另一个站点级别的文件—— Global.asax文件。
2.6.2 Global.asax包含整个站点都可以使用的代码
Web.config中包含的是值,而Global.asax中包含的是代码。与Web.config一样,Global.asax也位于站点的根目录下。编写代码将在第9章详细讨论,但现在可以大致了解一下Global.asax。
Global.asax中的代码将在以下三种情况之一发生时执行。第一种情况是应用程序作为一个整体启动或关闭的时候。第二种情况是当每个用户开始或停止使用站点的时候。第三种情况是响应单个页面可能发生的特殊事件,例如用户登录或错误出现。这些都称为事件。当这些事件中的某一个发生时,ASP.NET将通知Global.asax,通过编辑Global.asax,开发人员可以把对事件做出响应的代码放在其中,在事件发生时,对应的代码将会执行。
在本书的后续章节中,将使用Global.asax在Wrox United Web站点的所有页面之间共享代码。>
2]
来源:
说明:所有来源为 .net学习网的文章均为原创,如有转载,请在转载处标注本页地址,谢谢!
【编辑:Wyf】
打赏
扫码打赏,您说多少就多少