第14讲 网站配置与部署.docx
《第14讲 网站配置与部署.docx》由会员分享,可在线阅读,更多相关《第14讲 网站配置与部署.docx(18页珍藏版)》请在冰点文库上搜索。
第14讲网站配置与部署
课题:
配置ASP.NET网站
目的要求:
讲述网站配置文件的特点、类型、结构以及功能,介绍常用的网站配置管理工具,要求学生掌握在Web.config文件中定义各种设置的方法。
教学重点:
Web.config文件的结构及其常用设置。
教学难点:
如何在应用中灵活地进行网站配置。
课时:
2学时
教学方法:
讲授(用多媒体教学)
教学内容和步骤:
第14讲配置ASP.NET网站
到目前为止,我们学习了各种各样的ASP.NET网站的设计与编程知识。
本次课将讲述ASP.NET站点的配置、管理和部署,讨论如何将数据库的连接字串放入配置文件,并在Web应用程序中获取;如何配置身份验证,仅有许可的用户才能访问站点。
这些内容听起来比较复杂,不过,我们只要运用VisualStudio的相关工具,在可视化界面中就能完成相应的配置与部署工作。
14.1配置文件
Web站点开发完成后,我们应该将其发布,部署到真正的Web服务器上。
在设计开发网站的过程中,调试运行网页时,我们习惯于采用VisualStudio内置的开发服务器,本地计算机同时充当后台数据库服务器。
在发布网站时,服务器迁移的问题就成了不可回避的关键问题。
如果将数据库连接字符串直接写入数据访问层的相关类中,或者直接写入ASP.NET页面的后置代码文件中,那么在迁移数据库时就必须修改连接字符串并重新编译,这真是一件让人不胜其烦的事情。
其实,只要合理运用ASP.NET的配置文件,这些貌似棘手的难题就引刃而解了。
14.1.1配置文件概述
ASP.NET提供了一个操作简易并且功能强大的配置系统,通过配置系统,我们可以轻松定制ASP.NET应用程序。
ASP.NET提供了两种配置文件,即machine.config和Web.config,两者的区别就在于设置的作用域不同。
这两种配置文件均基于XML格式,开发人员可以使用任何标准的文本编辑器或XML分析器创建和编辑这些配置文件。
1.machine.config
服务器的配置信息保存在一个名为machine.config的配置文件中,该文件保存了整台计算机(服务器)上的所有ASP.NETWeb应用程序的配置信息。
Machine.config一般保存在“%systemroot%\Microsoft\Framework\V版本号\CONFIG\”目录下,读者可以通过Windows系统提供的搜索文件功能进行查找。
在笔者的计算机上,machine.config文件的保存目录为“C:
\WINDOWS\Microsoft.NET\Framework\v2.0.50727\CONFIG”,如下图所示。
2.web.config
一个ASP.NET网站可以拥有多个web.config配置文件。
这些配置文件可以出现在ASP.NETWeb应用程序服务器上的多个目录中。
每个web.config文件都将配置信息应用于它自己的目录和它下面的所有子目录。
子目录中的配置文件可以提供除从父目录继承的配置信息以外的配置信息,子目录配置设置可以重写或修改父目录中定义的设置。
一台Web服务器中只能有一个machine.config文件,它保存了所有ASP.NETWeb应用程序所使用的默认配置数据;一台Web服务器中可以有多个web.config文件,它包含每一个具体的Web应用程序的配置信息,它可以覆盖machine.config文件中的默认配置,从而为Web应用程序创建特定的运行环境。
下表列出了各种配置文件在配置层次结构中的级别、每个文件的名称以及对每个文件的重要继承特征的说明。
配置级别
文件名
文件说明
服务器
Machine.config
Machine.config文件包含服务器上所有Web应用程序的ASP.NET架构。
此文件位于配置合并层次结构的顶层。
根Web
Web.config
服务器的Web.config文件与Machine.config文件存储在同一个目录中,它包含大部分system.web配置节的默认值。
运行时,此文件是从配置层次结构中的从上往下数第二层合并的。
网站
Web.config
特定网站的Web.config文件包含应用于该网站的设置,并向下继承到该站点的所有ASP.NET应用程序和子目录。
ASP.NET应用程序根目录
Web.config
特定ASP.NET应用程序的Web.config文件位于该应用程序的根目录中,它包含应用于Web应用程序并向下继承到其分支中的所有子目录的设置。
ASP.NET应用程序子目录
Web.config
应用程序子目录的Web.config文件包含应用于此子目录并向下继承到其分支中的所有子目录的设置。
14.1.2Web.config文件的结构
web.config文件是一个XML文件,它的根结点是configuration,在configuration节点下的常见子节点有configSections、appSettings、和等。
配置节处理程序声明区域驻留在Web.config文件中的configSections元素内。
它包含在其中声明节处理程序的ASP.NET配置section元素。
可以将这些配置节处理程序声明嵌套在sectionGroup元素中,以帮助组织配置信息。
通常,sectionGroup元素表示要应用配置设置的命名空间。
节点主要用于配置一些网站的应用配置信息,比如上传文件的保存路径等,以下是一个例子:
--允许上传的图片格式类型-->
--允许上传的文件类型-->
.zip;.rar;.xls;.doc"/>
对于节点中的值可以按照key来进行访问,以下就是一个读取key值为”FileType”节点值的例子:
stringfileType=ConfigurationManager.AppSettings["FileType"];
connectionStrings节点主要用于配置数据库连接的,我们可以connectionStrings节点中增加任意个节点来保存数据库连接字符串,将来在代码中通过代码的方式动态获取节点的值来实例化数据库连接对象,这样一旦部署的时候数据库连接信息发生变化我们仅需要更改此处的配置即可,而不必因为数据库连接信息的变化而需要改动程序代码和重新部署。
具体应用将在下一节给出例子。
system.web节点包含许多用于配置ASP.NETWeb应用程序和控制应用程序行为方式的配置元素,其中,比较重要的子配置节点有compilation、autnentication、authentication、customErrors等等。
Compilation节点配置ASP.NET使用的所有编译设置。
authentication节点设置ASP.NET应用程序的身份验证模式。
authentication节点控制用户对网站、目录或者单独页的访问,必须配合authentication节点一起使用。
customErrors节点一般用于设置网站发生错误后跳转至哪些错误信息显示页面。
具体应用在此不展开讨论,下一节介绍实例。
14.2Web.config中的常用设置
通过Web.config文件,我们可以对ASP.NET应用程序进行方方面面的设置。
本节只讨论几种常见的设置。
14.2.1数据库连接配置
1.配置数据库连接字符串
数据库连接属于站点级的配置,所以一般应将其存储在Web.config文件中。
在web.config中,所有的配置信息都驻留在和的XML标记之间。
我们可以在这里保存数据库连接字符串,具体代码如下所示:
在这段代码中,使用了配置节,保存ASP.NET应用程序中需要使用的数据库连接字符串。
在该配置节中,可添加多个add标签,用于保存多个数据库连接的配置。
对于add标签,它主要的常用属性如下:
(1)name:
用于标记连接字符串的名称。
(2)connectionStrings:
用于存储连接字符串。
2.使用连接字符串
使用C#读取web.config文件中的数据库连接字符串的方法简单,具体语法如下:
publicstaticstringconnstring=ConfigurationManager.ConnectionStrings["MyLogin"].ConnectionString;
针对前面提到的网站登录、注册模块项目,读者可在数据库访问类db.cs文件中,将代码中直接定义变量connstring并赋值的语句替换成上述语句,调试运行网页。
当然,我们应该在db.cs中通过下述语句加入对System.Configration命名空间的引用:
usingSystem.Configuration;
这样的话,当数据库要更换地址,或者访问用户名和密码发生变化时,我们直接修改web.config配置文件就可以了。
当然,将数据库连接字符串直接放在配置文件中,容易被他人窃取数据库访问的用户名和密码,具有安全隐患。
为了应对这样的问题,可以对数据库连接字符串进行加密处理后放在配置文件中。
ASP.NET提供了命令行工具aspnet_regiis.exe,按照简单的语法要求输入相关命令,可完成连接字符串的加密或解密任务。
具体操作请查阅相关资料,在此不展开论述。
14.2.2身份验证和授权
1.配置身份验证
前两次课,我们分析了网站常用的注册登录模块的设计与实现,提到使用Session对象来保存用户的登录信息。
这样做带来一个问题:
后台的每一个页面都要编写代码,来验证用户是否登录。
其实在ASP.NET中,完全不需要这么复杂,它有一套基于用户和角色的安全体系。
所谓身份验证,是确认用户身份的过程,它通过凭证或一些身份表单来完成。
比如我们可以使用Session记录用户的身份。
验证不一定是必须的,如果没有经过验证,那么该用户称为匿名用户。
没有身份验证的访问称为匿名访问。
ASP.NET的身份验证系统非常灵活,支持4种模式的验证,如下表所示。
身份验证类型
说明
Windows
使用Windows验证,这是默认值
Forms
为验证用户身份而将请求重定向到一个特定的网页,该网页会从用户那里获得凭证,并把凭证提交给应用程序用于身份验证
Passport
微软提供给网站开发人员的集中式商业验证服务,它是基于MicrosoftPassport的身份验证
None
无验证,允许匿名访问,或手动编码控制用户访问
下面分别介绍除了None类型以外的其他三种身份验证类型。
1.Windows验证
Windows验证提供了一种能够Windows操作系统平台和NTFS文件系统安全性的方法。
该验证安全性比较高,但只能用于Windows平台,并且要求访问者在Web服务器所在的域中拥有一个用户账号。
所以该验证仅适合某些公司内部站点使用,不适用于面向大众的商业站点。
Windows验证的配置方式为:
2.Passport验证
Passport验证时微软提供的一种单点登录的方式。
单点登录就是一种跨域、跨站点的登录验证方式。
使用该验证方式需要付费,并且注册通行证服务。
所以国内采用该验证方式登录的站点也不是很多。
Passport验证的配置方式为:
3.Forms验证
Forms表单的验证方式最初由亚马逊网站开发使用,到现在为止使用相当广泛。
它在内部使用Cookie来维护页面之间的状态。
表单验证方式的使用很简单,比如,我们希望所有访问管理员后台的用户都到管理员的登陆页去登录,则可以这样设置:
其中,forms子标签常用的属性如下表所示。
属性
说明
name
指定用于身份验证的Cookie名称,默认情况下,name的值是.ASPXAUTH
loginUrl
指定为登录而要重定向到的URL。
默认为default.aspx
timeout
指定以整数分钟为单位,表单验证的有效时间即是Cookie的过期时间
path
Cookie的指定路径。
默认为正斜杠(/),表示该Cookie可用于整个站点
2.授权
权限用于判断用户是否具有所请求资源的访问权限。
比如只有管理员身份的用户才可以访问管理员后台,而所有的用户都可以访问前台页面。
仅仅设置身份验证,你可能看不到任何效果,因为在默认情况下,站点是允许匿名访问的。
我们还必须对不同的用户或者角色授予不同权限。
【例14.1】新建一个基于C#的ASP.NET网站,并添加一个AdminForms文件夹,将管理员后台的所有页面都存储于站点根目录的AdminForms文件夹中,如下图所示。
我们可以在AdminForms文件夹中新建Web.config文件,对访问权限进行设置。
具体代码如下:
xmlversion="1.0"encoding="utf-8"?
>
"/>
其中,元素用于配置授权信息,它有两种子标签deny(拒绝)和allow(允许)。
每种子标签都有如下表所示的属性。
属性
说明
user
一个用逗号分隔的用户名列表,列表中的用户被授予(或拒绝)对资源的访问。
其中“?
”代表匿名用户:
“*”代表所有用户
roles
逗号分隔的角色列表。
这些角色被授予(或拒绝)对资源的访问
verbs
逗号分隔的谓词列表,比如GET、HEAD、Post或DEBUG
当然,使用表单验证时,需要对用户登录和注销做一些处理。
登录按钮对应的代码如下:
protectedvoidBtnLogin_Click(objectsender,EventArgse)
{
stringreturnUrl=Request["ReturnUrl"];//获取用户请求的页面
if(FormsAuthentication.Authenticate(txtName.Text,txtpwd.Text))
{
System.Web.Security.FormsAuthentication.SetAuthCookie(txtName.Text,true);//给用户发凭证(Cookie)
Session["userName"]=txtName.Text;
if(returnUrl==null)
{
FormsAuthentication.RedirectFromLoginPage(txtName.Text,false);
}
else
{
Response.Redirect(returnUrl);
}
}
else
{
this.ClientScript.RegisterStartupScript(this.GetType(),"","");
}
}
用户退出也需要做特殊的处理:
System.Web.Security.FormsAuthentication.SignOut();//删除凭证(Cookie)
14.2.3自定义错误
ASP.NET允许编写自定义错误页面。
假如我们的WEB应用程序抛出异常,作为开发人员,我们希望看到错误信息,以便迅速更改错误。
但你一定不想让网站用户看到错误,因为有些错误会暴露程序的漏洞,这可能会被一些别有用心的人利用。
在网站根目录下的Web.config配置文件中的节中,为了在网站发生错误时跳转到自定义的错误显示页面,我们添加如下代码:
对上述代码,说明如下:
1.defaultRedirect代表发生错误时,浏览器重定向到的URL。
2.mode指定启用(On)、禁用(Off)自定义错误,还是只让其显示给远程计算机(RemoteOnly)。
3.error子标签用于定义一些特殊的错误,它有以下两个属性:
(1)statusCode:
HTTP错误的状态码,比如,403为已禁止访问、404为文件未找到、500为内部服务器错误等。
(2)redirect:
用于指定当该状态的错误发生时,重定向到的页面的URL。
对于例【例14.1】,当我们进行了上述配置后,如果发生错误,则显示如下所示的出错提示页面。
14.2.4配置调试和运行时
1.启用和禁用调试的配置
当利用VisualStudio可视化工具创建Web应用程序时,程序会自动在网站根目录下创建web.config文件。
由于开发环境默认不启用调试,第一次调试该网站,在VisualStudio中依次选择”调试”、“启动调试”菜单,将弹出询问是否修改web.config文件以启动调试的对话框,如下图所示。
我们选择修改Web.config文件以启用调试,则在Web.config文件中将增加如下配置代码:
……此处省略若干代码
Debug属性设置为True时,将启动aspx调试;设置为False时,可以提高应用程序的运行性能。
建议在程序开发调试时,设置为Debug=“True”,交付客户使用时,设置为Debug=“False”。
2.运行时配置
在网站根目录下的Web.config配置文件中的节中,可进行运行时的配置,其格式如下:
httpRuntime是配置http运行时设置,以确定如何处理对应用程序的请求。
其实有关运行配置的内容很多,上面仅列举出了几个常见的设置,下面对这几个设置加以简单说明。
(1)enable
enable是一个可选的Boolean属性,指定是否在当前的节点及子节点级别启用应用程序域(AppDomain),以接受传入的请求。
如果为False,则实际上关闭了该应用程序。
默认值为True。
(2)executionTimeout
executionTimeout是一个可选的TimeSpan属性,用于指定Web程序在被ASP.NET自动关闭之前,允许执行请求的最大秒数,其默认值为“00:
01:
50”,即110秒。
只有当compilation元素中的调试属性为False时,此超时属性才适用。
如果在Web程序中,出现一个复杂的循环语句,执行了很长时间还没有结束,势必严重占用服务器资源,从而影响整个网站的性能。
此设置可以将超过运行时间上限的执行结束掉。
(3)maxRequestLength
maxRequestLength是可选的Int32属性,指定输入流缓冲阈值限制(以KB为单位),其默认值为4096(4MB)。
此限制可用于防止拒绝服务攻击;例如,因用户向服务器发送大型文件而导致的拒绝服务攻击。
如果需要允许网站用户上传超过4MB的文件,需要修改此设置。
14.3配置管理工具简介
本节将介绍一些用于配置管理的工具,以便我们能够方便快捷地对基于ASP.NET的应用程序的配置文件进行修改。
14.2.1配置管理概述
ASP.NET提供了丰富的编辑工具,包括我们使用的VisualStudio2008的IDE,它提供了编辑配置节时的智能提示,如下图所示。
下面主要介绍两个操作方便的配置管理工具:
Web站点管理工具和MMC(Microsoft管理控制台)ASP.NET插件。
14.2.2Web站点管理工具
Web站点管理工具是一个基于Web的应用程序,可通过一个简单、易用的Web接口管理Web站点的配置。
在VisualStudio2008集成开发环境中,可通过依次点击“项目”、“ASP.NET配置”这两个菜单,方便地打开站点管理工具。
我们也可以通过解决方案资源管理器的工具栏,打开站点管理工具,如下图所示。
站点管理工具打开后,如下图所示。
该工具有主页、安全、应用程序和提供程序等4个选项卡。
“主页”选项卡显示欢迎页面。
“安全”选项卡用于设置和编辑用户、角色和站点访问的权限。
“应用程序”选项卡中提供了许多与应用程序相关的配置,包括应用程序设置、SMTP邮件服务器设置、调试和跟踪设置、整个Web应用程序的启动和调试以及定义默认错误页。
“提供程序”选项卡可配置网站管理数据的存储方式。
我们可以对站点的所有管理数据只使用一个提供程序,也可以为每种功能指定不同的提供程序。
通过站点管理工具对网站的具体配置操作,在此不展开论述。
14.2.3MMCASP.NET插件
MMCASP.NET插件是一个交互式的编辑工具,也可称为ASP.NET配置设置对话框。
该工具是对IIS管理控制台(Micr