Transcript
Page 1: 《ASP.NET 程序设计 》

《《 ASP.NETASP.NET程序设程序设计计》》

Page 2: 《ASP.NET 程序设计 》

第第 1111 章 配置应用程序及其它应用 章 配置应用程序及其它应用

Page 3: 《ASP.NET 程序设计 》

讲解提纲讲解提纲

• 11.1 11.1 关于配置应用程序 关于配置应用程序 • 11.2 11.2 配置配置 Global.asaxGlobal.asax 文件 文件 • 11.3 11.3 配置配置 web.Configweb.Config 文件 文件 • 11.4 11.4 安全考虑 安全考虑 • 11.5 11.5 使用缓存 使用缓存 • 11.6 11.6 调试程序 调试程序

Page 4: 《ASP.NET 程序设计 》

本章要点本章要点

•配置配置 Global.asaGlobal.asa文件文件•配置配置 web.Configweb.Config文件,尤其是读取其中自定义文件,尤其是读取其中自定义的属性。的属性。

•如何保证应用程序的安全如何保证应用程序的安全•如何使用输出缓存如何使用输出缓存•如何调试程序如何调试程序

Page 5: 《ASP.NET 程序设计 》

11.1 11.1 关于配置应用程序关于配置应用程序

• 什么是应用程序?什么是应用程序?• 配置应用程序的重要内容:配置应用程序的重要内容:

– (( 11 )) binbin 文件夹文件夹 – (( 22 )) Global.asaxGlobal.asax 文件文件 – (( 33 )) web.Configweb.Config 文件文件

Page 6: 《ASP.NET 程序设计 》

11.2 11.2 配置配置 Global.asaxGlobal.asax 文件文件

• 该文件用来存放该文件用来存放 SessionSession 对象和对象和 ApplicationApplication 对对象的事件过程。象的事件过程。

• 每一个应用程序只能有每一个应用程序只能有 11 个个 Global.asaxGlobal.asax 文件,文件,并必须存放在应用程序的根目录下。并必须存放在应用程序的根目录下。

Page 7: 《ASP.NET 程序设计 》

10.2.1 10.2.1 Global.asaxGlobal.asax 文件的基本格式文件的基本格式 • 格式:格式:

– <<Script language="VB" runat="server">Script language="VB" runat="server">– Sub Application_OnStart(Sender As Object, E As Sub Application_OnStart(Sender As Object, E As

EventArgs)EventArgs)– …………– End SubEnd Sub– Sub Application_OnEnd(Sender As Object, E As Sub Application_OnEnd(Sender As Object, E As

EventArgs)EventArgs)– …………– End SubEnd Sub– …………– </Script></Script>

• 位置:位置:– 应用程序的根目录下,只有一个。应用程序的根目录下,只有一个。

• 其中的事件:其中的事件:– Application_OnStart Application_OnStart 、 、

Application_OnEnd Application_OnEnd 、、 Session_OnStartSession_OnStart 、、 Session_OnEndSession_OnEnd 、、 ApplApplication_OnBeginRequestication_OnBeginRequest 、、 Application_OnEndRequestApplication_OnEndRequest

Page 8: 《ASP.NET 程序设计 》

11.2.2 11.2.2 Global.asaxGlobal.asax 文件示例文件示例

• 这是一个网站日志示例,在系统启动、系统关闭、这是一个网站日志示例,在系统启动、系统关闭、客户登录或退出时在文本文件客户登录或退出时在文本文件 log.txtlog.txt 中记录有关中记录有关信息。信息。

• 两个文件两个文件– Global.asax Global.asax 用来记录日志用来记录日志– 11-2.11-2.aspx aspx 用来将日志信息显示在页面上用来将日志信息显示在页面上

Page 9: 《ASP.NET 程序设计 》

Global.asaxGlobal.asax 文件文件 Global.asp

x

Page 10: 《ASP.NET 程序设计 》

11-2.11-2.aspx aspx 读取日志信息 读取日志信息 11-2.aspx

Page 11: 《ASP.NET 程序设计 》

11.3 11.3 配置配置 web.Configweb.Config 文件文件

• web.Configweb.Config 文件用来保存一些常量或者访问权文件用来保存一些常量或者访问权限设置等。限设置等。

• 它的配置是层次式的。它的配置是层次式的。• 所有的应用程序都会继承所有的应用程序都会继承 C:\WinNT\C:\WinNT\

Microsoft.NET\Framework\(Microsoft.NET\Framework\( 版本号版本号 )\)\config\config\machine.configmachine.config 文件,大部分常用的设置在该文件,大部分常用的设置在该文件中都已经配置好了。文件中都已经配置好了。

Page 12: 《ASP.NET 程序设计 》

11.3.1 11.3.1 web.Configweb.Config 文件的基本格式文件的基本格式 web.Config

Page 13: 《ASP.NET 程序设计 》

11.3.2 11.3.2 读取自定义属性示例读取自定义属性示例

• 在在 web.Configweb.Config 自定义属性自定义属性– <<appSettings>appSettings>– <add key=“<add key=“ 常量名称” 常量名称” value=“value=“ 常量的常量的

值值 "/>"/>– </</appSettings>appSettings>

• 读取自定义属性的语法读取自定义属性的语法– ConfigurationSettings.AppSettings(ConfigurationSettings.AppSettings( 自定义常量名称自定义常量名称 ) )

Page 14: 《ASP.NET 程序设计 》

读取自定义属性示例读取自定义属性示例11-4.aspx

Page 15: 《ASP.NET 程序设计 》

11.4 11.4 安全考虑安全考虑

• 认证和授权认证和授权• 认证的三种方式认证的三种方式

– (( 11 )基于)基于 WindowsWindows 的认证的认证– (( 22 )基于表单的认证)基于表单的认证– (( 33 )基于微软的)基于微软的 PassportPassport 的认证的认证

Page 16: 《ASP.NET 程序设计 》

11.4.1 11.4.1 基于基于 WindowsWindows 的认证的认证

• 什么是什么是 WindowsWindows 认证?认证?• WindowsWindows 认证的三个步骤:认证的三个步骤:

– 第第 11 步:在步:在 web.Configweb.Config 中设置中设置– 第第 22 步:在步:在 IISIIS 中设置中设置– 第第 33 步:添加用户步:添加用户

Page 17: 《ASP.NET 程序设计 》

第第 11 步:在步:在 web.Configweb.Config 中设置中设置

• 在在 web.Configweb.Config 文件中添加如下语句:文件中添加如下语句:• <<system.web>system.web>

• <authentication mode="Windows" /><authentication mode="Windows" />

• </system.web></system.web>

Page 18: 《ASP.NET 程序设计 》

第第 22 步:在步:在 IISIIS 中设置中设置

• 选择【开始】→【程选择【开始】→【程序】→【管理工具】序】→【管理工具】→【→【 InternetInternet 服务管服务管理器】菜单命令打开理器】菜单命令打开IISIIS 。。

• 在“虚拟目录属性”在“虚拟目录属性”对话框的“目录安全对话框的“目录安全性”标签中单击【编性”标签中单击【编辑】按钮,然后选择辑】按钮,然后选择认证方式。认证方式。

Page 19: 《ASP.NET 程序设计 》

第第 33 步:添加用户步:添加用户

• 依次选择【开始】→依次选择【开始】→【程序】→【管理工【程序】→【管理工具】→【计算机管具】→【计算机管理】菜单命令打开对理】菜单命令打开对话框。话框。

• 如图选择“用户”,如图选择“用户”,并在右边用户列表框并在右边用户列表框中的右键菜单中选择中的右键菜单中选择【新用户】命令,即【新用户】命令,即可为每一个客户添加可为每一个客户添加用户名和密码用户名和密码

Page 20: 《ASP.NET 程序设计 》

11.4.2 11.4.2 基于表单的认证基于表单的认证

• 什么是基于表单的认证?什么是基于表单的认证?• 步骤:步骤:

– 第第 11 步:在步:在 web.Configweb.Config 中设置:中设置:– 第第 22 步:建立登录页面。步:建立登录页面。

Page 21: 《ASP.NET 程序设计 》

第第 11 步:在步:在 web.Configweb.Config 中设置中设置

• 在应用程序的在应用程序的 web.Configweb.Config 文件中添加如下语句:文件中添加如下语句:– <<system.web>system.web>– <authentication mode="Forms" ><authentication mode="Forms" >– <forms name="<forms name=" 认证认证 cookiecookie 名称名称 " "

loginUrl="loginUrl=" 登录页面路径登录页面路径 " />" />– </</authentication>authentication>– </system.web></system.web>

Page 22: 《ASP.NET 程序设计 》

第第 22 步:建立登录页面步:建立登录页面

• 重要语句如下:重要语句如下:– FormsAuthentication.SetAuthCookie(FormsAuthentication.SetAuthCookie( 用户名用户名

称称 ,,true | false)true | false)– Response.Redirect(Response.Redirect( 指定页面,一般为首页指定页面,一般为首页 ))

• 也可以合为一句:也可以合为一句:– FormsAuthentication.Authenticate(FormsAuthentication.Authenticate( 用户名用户名

称称 ,,true | false)true | false)

• 退出登录退出登录语句:语句:– FormsAuthentication.SignOut()FormsAuthentication.SignOut()

Page 23: 《ASP.NET 程序设计 》

11.4.3 11.4.3 关于授权关于授权

• 什么是授权?什么是授权?• 在在 web.Configweb.Config 中添加如下语句:中添加如下语句:

– <<authorization>authorization>– <deny users="<deny users=" 用户列表用户列表 " />" />– <<allow users="allow users=" 用户列表用户列表 " />" />– </</authorization>authorization>

Page 24: 《ASP.NET 程序设计 》

11.4.4 11.4.4 网络安全综合示例网络安全综合示例

• 这个示例要求用户必须注册、登录后才能浏览学这个示例要求用户必须注册、登录后才能浏览学习资料。习资料。

• 管理员用户登录后就可以管理普通用户。管理员用户登录后就可以管理普通用户。

Page 25: 《ASP.NET 程序设计 》

网络安全综合示例网络安全综合示例结构结构

• web.Config web.Config web.Configweb.Config 配置文件配置文件• default.aspxdefault.aspx 应用程序首页应用程序首页• userinfo.mdbuserinfo.mdb 这是用户信息数据库这是用户信息数据库• loglog 文件夹文件夹

– login.aspxlogin.aspx 登录页面(登录页面( login.aspxlogin.aspx ))– logout.aspxlogout.aspx 退出登录页面退出登录页面– adduser.aspxadduser.aspx 新用户注册页面新用户注册页面

• adminadmin 文件夹 文件夹 – admin.aspxadmin.aspx 管理员页面管理员页面

• course course 文件夹 用来存放学习资料页面文件夹 用来存放学习资料页面(( 1.1.aspxaspx 、、 2.aspx2.aspx 和和 3.3.aspxaspx ))及配套文件,不用管它。及配套文件,不用管它。

Page 26: 《ASP.NET 程序设计 》

(( 11 )) web.Configweb.Config Web.Config

Page 27: 《ASP.NET 程序设计 》

(( 22 )) default.aspxdefault.aspx

• 这只是一个普通页面文件,通过验证后,就可以这只是一个普通页面文件,通过验证后,就可以打开该页面,进行学习。打开该页面,进行学习。

default.aspx

Page 28: 《ASP.NET 程序设计 》

(( 33 )) userinfo.mdbuserinfo.mdb

• 保存用户信息的数据库文件。保存用户信息的数据库文件。• 包含包含 11 个表个表 usersusers ,,其中有其中有 55 个字段,分别为个字段,分别为

idid ((序号)、序号)、 usernameusername ((用户用户名)、名)、 mypasswordmypassword ((密码)、密码)、 emailemail (( E-E-mailmail )、)、 submit_datesubmit_date ((注册日期)。注册日期)。

• 其中其中 usernameusername 不能重复,所以设为主键。不能重复,所以设为主键。

Page 29: 《ASP.NET 程序设计 》

(( 44 )) login.aspxlogin.aspx Login.aspx

Page 30: 《ASP.NET 程序设计 》

(( 55 )) logout.aspxlogout.aspx logout.asp

x

Page 31: 《ASP.NET 程序设计 》

(( 66 )) adduser.aspxadduser.aspx

• 这是一个普通的添加用户的页面。这是一个普通的添加用户的页面。• 注意因为注意因为 usernameusername 是主键,所以如果用户名已是主键,所以如果用户名已

经被其它人注册,将会发生错误。然后提示客户经被其它人注册,将会发生错误。然后提示客户重新注册即可。重新注册即可。

Page 32: 《ASP.NET 程序设计 》

(( 77 )) admin.aspxadmin.aspx

• 这也是一个普通的数据库管理页面。这也是一个普通的数据库管理页面。• 当管理员用户当管理员用户 adminadmin 通过认证后,就可以打开这通过认证后,就可以打开这

个页面管理普通用户。个页面管理普通用户。• 由于在由于在 web.Configweb.Config 中已经设置了,普通用户是中已经设置了,普通用户是

无法打开该页面的。无法打开该页面的。

Page 33: 《ASP.NET 程序设计 》

(( 88 )运行结果)运行结果Login.aspx

default.aspx

admin.aspx

adduser.aspx

Page 34: 《ASP.NET 程序设计 》

11.4.5 11.4.5 其它安全考虑其它安全考虑

• 修改数据库的文件名和扩展名,尽量让别人猜不修改数据库的文件名和扩展名,尽量让别人猜不出来。出来。

• 因为授权只对因为授权只对 ..aspxaspx 文件有效,对文件有效,对 HTMLHTML 文件无文件无效。解决方法是修改扩展名为效。解决方法是修改扩展名为 ..aspxaspx 。。

• 数据库中用户密码也可以加密数据库中用户密码也可以加密– (关于加密请看后面示例)(关于加密请看后面示例)

Page 35: 《ASP.NET 程序设计 》

利用利用 SHA1SHA1 和和 MD5MD5 加密示例加密示例11-4.aspx

Page 36: 《ASP.NET 程序设计 》

11.5 11.5 使用缓存使用缓存

• 什么是缓存?什么是缓存?• 缓存的三种方式缓存的三种方式 ::

– 页输出缓存页输出缓存– 页片断缓存页片断缓存– 数据缓存数据缓存

Page 37: 《ASP.NET 程序设计 》

11.5.1 11.5.1 页输出缓存页输出缓存

• 页输出缓存,就是可以将第一次请求的页面储存页输出缓存,就是可以将第一次请求的页面储存在内存中,以后再次请求时直接从内存中调用。在内存中,以后再次请求时直接从内存中调用。

• 实现页输出缓存的方法是在页面顶端添加如下缓实现页输出缓存的方法是在页面顶端添加如下缓存指令:存指令:– <%@ <%@ OutputCache Duration="60" OutputCache Duration="60"

Location="Any" VaryByParam="None" %>Location="Any" VaryByParam="None" %>

• 说明:说明:– DurationDuration 表示缓存时间表示缓存时间 – LocationLocation 表示缓存存放位置表示缓存存放位置 – VaryByParamVaryByParam 可以在缓存页面中添加参数可以在缓存页面中添加参数

Page 38: 《ASP.NET 程序设计 》

11.5.2 11.5.2 页片断缓存页片断缓存

• 所谓页片断缓存,就是只缓存页面中部分内容。所谓页片断缓存,就是只缓存页面中部分内容。• 实现方法是将部分内容创建一个用户控件,然后实现方法是将部分内容创建一个用户控件,然后

在其中添加如在其中添加如 11.5.111.5.1 节中的缓存指令即可。节中的缓存指令即可。

Page 39: 《ASP.NET 程序设计 》

11.5.3 11.5.3 数据缓存数据缓存

• 所谓数据缓存,就是将数据或所谓数据缓存,就是将数据或 DataSetDataSet 对象等保对象等保存到缓存中。存到缓存中。

• 实现方法是利用实现方法是利用 CacheCache 类,它有点类似于类,它有点类似于SessionSession 对象和对象和 Application Application 对象对象

Page 40: 《ASP.NET 程序设计 》

数据缓存示例数据缓存示例11-9.aspx

Page 41: 《ASP.NET 程序设计 》

11.6 11.6 调试程序调试程序

• 讲解内容讲解内容– 使用使用 Response.WriteResponse.Write 方法方法– 使用使用 DebugDebug – 使用使用 tracetrace ((跟踪)跟踪) – 使用使用 SDK SDK 调试器调试器

Page 42: 《ASP.NET 程序设计 》

11.6.1 11.6.1 使用使用 Response.WriteResponse.Write 方法方法

• 可以使用可以使用 Response.WriteResponse.Write 方法在程序中输出中方法在程序中输出中间结果。间结果。

• 尤其在数据库程序开发时,可以用它在页面上输尤其在数据库程序开发时,可以用它在页面上输出出 SQLSQL 语句。语句。

• 使用该方法时结合注释和使用该方法时结合注释和 Response.EndResponse.End 方法。方法。

Page 43: 《ASP.NET 程序设计 》

使用使用 Response.WriteResponse.Write 方法示例方法示例

• 假如某一条假如某一条 SQLSQL 语句总是执行错误,这时候就可语句总是执行错误,这时候就可以在执行执行该语句之前使用以在执行执行该语句之前使用 Response.Write Response.Write 方法将方法将 SQLSQL 语句输出到页面上,方便大家仔细查语句输出到页面上,方便大家仔细查看。看。

• 具体方法:具体方法:– strSql=“……”strSql=“……”– Resonse.Write(strSql)Resonse.Write(strSql)– Response.EndResponse.End– …………

Page 44: 《ASP.NET 程序设计 》

11.6.2 11.6.2 使用使用 DebugDebug

• 有时候发生错误时,并不告诉你错误发生在哪一有时候发生错误时,并不告诉你错误发生在哪一行,就可以在页面顶端添加行,就可以在页面顶端添加

• <%@ <%@ Page debug="true"%>Page debug="true"%>

• 或者,在或者,在 web.Configweb.Config 中添加中添加• <<compilation debug="true" />compilation debug="true" />

• 当发生错误时,就可以显示错误的具体信息。当发生错误时,就可以显示错误的具体信息。

Page 45: 《ASP.NET 程序设计 》

11.6.3 11.6.3 使用使用 tracetrace ((跟踪)跟踪)

• 所谓所谓 tracetrace ,,指的是跟踪。它可以对程序中变量的值和代指的是跟踪。它可以对程序中变量的值和代码执行情况进行跟踪。它分为两种:页面跟踪和应用程序码执行情况进行跟踪。它分为两种:页面跟踪和应用程序跟踪。跟踪。

• 实现页面跟踪只要在页面顶端添加实现页面跟踪只要在页面顶端添加• <%@ <%@ Page trace="true"%>Page trace="true"%>• 执行时,就会在页面上显示详细跟踪信息。执行时,就会在页面上显示详细跟踪信息。• 实现应用程序跟踪只要在实现应用程序跟踪只要在 web.Configweb.Config 中添加中添加• <<trace enabled="true" />trace enabled="true" />• 执行完毕后,它会将跟踪情况保存到一个系统文件执行完毕后,它会将跟踪情况保存到一个系统文件

trace.axdtrace.axd 中。在浏览器中输入中。在浏览器中输入 http://localhost/http://localhost/test3/trace.axdtest3/trace.axd 就可以显示跟踪信息。就可以显示跟踪信息。

Page 46: 《ASP.NET 程序设计 》

11.6.4 11.6.4 使用使用 SDK SDK 调试器调试器

• ..NETNET 框架提供了一个很好的调试器,可以逐行调框架提供了一个很好的调试器,可以逐行调试程序。该调试器的位置一般位于:试程序。该调试器的位置一般位于:– C:\Program Files\Microsoft.NET\FrameworkSDK\C:\Program Files\Microsoft.NET\FrameworkSDK\

GuiDebug\DbgCLR.exeGuiDebug\DbgCLR.exe

• 调试的具体步骤如后:调试的具体步骤如后:

Page 47: 《ASP.NET 程序设计 》

第第 11 步步

• 打开调试器,在其中打开要调试的文件打开调试器,在其中打开要调试的文件 11-11-9.9.aspxaspx 。。

Page 48: 《ASP.NET 程序设计 》

第第 22 步步

• 打开浏览器,输入打开浏览器,输入 http://http://localhostlocalhost/test3/11-9./test3/11-9.aspxaspx

Page 49: 《ASP.NET 程序设计 》

第第 33 步步

• 在调试器中依次选择【工具】→【进程】菜单命在调试器中依次选择【工具】→【进程】菜单命令,就会打开如图所表示的对话框,在其中选择令,就会打开如图所表示的对话框,在其中选择aspnet_ewp.exeaspnet_ewp.exe ,,然后单击【附加】按钮,然后单然后单击【附加】按钮,然后单击【关闭】按钮。击【关闭】按钮。

Page 50: 《ASP.NET 程序设计 》

11.6 11.6 本章小结本章小结

• 本章简单讲述了本章简单讲述了 Global.asaxGlobal.asax 、、 web.Configweb.Config 文文件、安全、缓存和调试内容,更复杂的内容请参件、安全、缓存和调试内容,更复杂的内容请参看看 ..NETNET 框架示例文档。框架示例文档。

• 本章内容确实比较难以理解,但是对于初学者,本章内容确实比较难以理解,但是对于初学者,一般只要掌握如何配置一般只要掌握如何配置 Global.asaxGlobal.asax 文件、在文件、在web.Configweb.Config 中自定义常量也就可以了。中自定义常量也就可以了。

• 对于网络安全,一般掌握最基本的基于表单的验对于网络安全,一般掌握最基本的基于表单的验证就可以了。请认真体会网络安全综合示例。证就可以了。请认真体会网络安全综合示例。

Page 51: 《ASP.NET 程序设计 》

再 见