logo资料库

ASP.NET内置对象、webconfig、缓存.doc

第1页 / 共24页
第2页 / 共24页
第3页 / 共24页
第4页 / 共24页
第5页 / 共24页
第6页 / 共24页
第7页 / 共24页
第8页 / 共24页
资料共24页,剩余部分请下载后查看
第13章 ASP.NET内置对象,应用程序配置和缓存
13.1 ASP.NET内置对象
13.1.1 Request传递请求对象
13.1.2 Response请求响应对象
13.1.3 Application状态对象
13.1.4 Session状态对象
13.1.5 Server服务对象
13.1.6 Cookie状态对象
13.1.7 Cache缓存对象
13.1.8 Global.asax配置
13.2 ASP.NET应用程序配置
13.2.1 ASP.NET应用程序配置
13.2.2 Web.config配置文件
13.2.3 ASP.NET基本配置节
13.3 ASP.NET缓存功能
13.3.1 缓存概述
13.3.2 页面输出缓存
13.3.3 页面部分缓存
13.3.4 应用程序数据缓存
13.3.5 检索应用程序数据缓存对象
13.4 小结
第 13 章 ASP.NET 内置对象,应用程序配置和缓存 Web 应用程序在传统的意义上来说是无状态的,Web 应用不能像 Win Form 那样维持客户端状态, 所以在 Web 应用中,通常需要使用内置对象进行客户端状态的保存。这些内置对象能够为 Web 应用程 序的开发提供设置,配置以及检索等功能。 13.1 ASP.NET 内置对象 在 ASP 的开发中,这些内置对象已经存在,这些内置对象包括 Response、Request、Application 等, 虽然 ASP 是一个可以称得上是“过时的”技术,但是在 ASP.NET 开发人员中依旧可以使用这些对象。 这些对象不仅能够获取页面传递的参数,某些对象还可以保存用户的信息,如 Cookie、Session 等。 13.1.1 Request 传递请求对象 Request 对象是 HttpRequest 类的一个实例,Request 对象用于读取客户端在 Web 请求期间发送的 HTTP 值。Request 对象常用的属性如下所示。  QueryString:获取 HTTP 查询字符串变量的集合。  Path:获取当前请求的虚拟路径。  UserHostAddress:获取远程客户端 IP 主机的地址。  Browser:获取有关正在请求的客户端的浏览器功能的信息。 1.QueryString:请求参数 QueryString 属性是用来获取 HTTP 查询字符串变量的集合,通过 QueryString 属性能够获取页面传 递的参数。在超链接中,往往需要从一个页面跳转到另外一个页面,跳转的页面需要获取 HTTP 的值来 进行相应的操作,例如新闻页面的 news.aspx?id=1。为了获取传递过来的 id 的值,则可以使用 Request 的 QueryString 属性,示例代码如下所示。 protected void Page_Load(object sender, EventArgs e) { if (!String.IsNullOrEmpty(Request.QueryString["id"])) { Label1.Text = Request.QueryString["id"]; //如果传递的 ID 值不为空 //将传递的值赋予标签中 } else { Label1.Text = "没有传递的值"; //提示没有传递的值 } if (!String.IsNullOrEmpty(Request.QueryString["type"])) { Label2.Text = Request.QueryString["type"]; //如果传递的 TYPE 值不为空 //获取传递的 TYPE 值 } else
Label2.Text = "没有传递的值"; //无值时进行相应的编码 { } } 上述代 码使用 Request 的 QueryString 属性来 接受传递 的 HTTP 的值, 当通过访 问页面路 径为 “http://localhost:29867/Default.aspx”时,默认传递的参数为空,因为其路径中没有对参数的访问。而当 访问的页面路径为“http://localhost:29867/Default.aspx?id=1&type=QueryString&action=get”时,就可以 从路径中看出该地址传递了三个参数,这三个参数和值分别为 id=1、type=QueryString 以及 action=get。 2.Path:获取路径 通过使用 Path 的方法可以获取当前请求的虚拟路径,示例代码如下所示。 Label3.Text = Request.Path.ToString(); //获取请求路径 当在应用程序开发中使用 Request.Path.ToString()时,就能够获取当前正在被请求的文件的虚拟路径 的值,当需要对相应的文件进行操作时,可以使用 Request.Path 的信息进行判断。 3.UserHostAddress:获取 IP 记录 通过使用 UserHostAddress 的方法,可以获取远程客户端 IP 主机的地址,示例代码如下所示。 Label4.Text = Request.UserHostAddress; //获取客户端 IP 在客户端主机 IP 统计和判断中,可以使用 Request.UserHostAddress 进行 IP 统计和判断。在有些系 统中,需要对来访的 IP 进行筛选,使用 Request.UserHostAddress 就能够轻松的判断用户 IP 并进行筛选 操作。 4.Browser:获取浏览器信息 通过使用 Browser 的方法,可以判断正在浏览网站的客户端的浏览器的版本,以及浏览器的一些信 息,示例代码如下所示。 Label5.Text = Request.Browser.Type.ToString(); //获取浏览器信息 这些属性能够获取服务器和客户端的相应信息,也可以通过“?”号进行 HTTP 的值的传递和获取, 上述代码运行结果如图 13-1 所示。 图 13-1 Request 对象 Request 不仅包括这些常用的属性,还包括其他属性,例如用于获取当前目录在服务器虚拟主机中 的绝对路径(如 ApplicationPath)。另外,开发人员也可是使用 Request 中的 Form 属性进行页面中窗体 的值集合的获取。 343
13.1.2 Response 请求响应对象 Response 对象是 HttpResponse 类的一个实例。HttpResponse 类用户封装页面操作的 HTTP 响应信息。 Response 对象的常用属性如下所示。  BufferOutput:获取或设置一个值,该值指示是否缓冲输出,并在完成处理整个页面之后将其发 送。  Cache:获取 Web 页面的缓存策略。  Charset:获取或设置输出流的 HTTP 字符集类型。  IsClientConnected:获取一个值,通过该值指示客户端是否仍连接在服务器上。  ContentEncoding:获取或设置输出流的 HTTP 字符集。  TrySkipIisCustomErrors:获取或设置一个值,指定是否支持 IIS 7.0 自定义错误输出。 1.Response 常用属性 BufferOutput 的默认属性为 True。当页面被加载时,要输出到客户端的数据都暂时存储在服务器的 缓冲期内并等待页面所有事件程序,以及所有的页面对象全部被浏览器解释完毕后,才将所有在缓冲区 中的数据发送到客户端浏览器,示例代码如下所示。 protected void Page_Load(object sender, EventArgs e) { Response.Write("缓冲区清除前.."); } //输出缓冲区清除 上述代码在 cs 文件中重写了 Page_Load 事件,该事件用于中向浏览器输出一行字符串“缓冲区清 除前”。在 ASPX 页面中,可以为页面增加代码以判断缓冲区的执行时间,示例代码如下所示。
<% Response.Write("缓冲区被清除"); %>
//输出字符串 上述代码在页面中插入了一段代码,并输出字符串“缓冲区被清除”。在运行该页面时,数据已经 存放在缓冲区中。然后 IIS 才开始读取 HTML 组件的部分,读取完毕后才将结果送至客户端浏览器,所 以在运行结果中可以发现,“缓冲期清除前”是在“缓冲区被清除”字符串之前出现,如图 13-2 所示。 因为 BufferOutput 属性默认为 true,所以上述代码并无法看到明显的区别,当在浏览器输出前清除 344 图 13-2 BufferOutput
缓冲区时,则可以看出区别。示例代码如下所示。 Response.Write("缓冲区清除前.."); Response.Clear(); //清除缓冲区 当使用 Response 的 Clear 方法时,缓冲区就被显式的清除了。在运行后,“缓冲区清除前”字符串 被清除,并不会呈现给浏览器。当需要屏蔽 Clear 方法对缓冲区的数据清除,则可以指定 BufferOutput 的属性为 False,示例代码如下所示。 Response.BufferOutput = false; Response.Write("缓冲区清除前.."); Response.Clear(); //设置缓冲区属性 //设置清除前字符 //清除缓冲区 使用上述代码将指定 BufferOutput 的属性为 False,在运行时缓冲区数据不会被 Clear 方法清除。 2.Response 常用方法 Response 方法可以输出 HTML 流到客户端,其中包括发送信息到客户端和客户端 URL 重定向,不 仅如此,Response 还可以设置 Cookie 的值以保存客户端信息。Response 的常用方法如下所示:  Write:向客户端发送指定的 HTTP 流。  End:停止页面的执行并输出相应的结果。  Clear:清除页面缓冲区中的数据。  Flush:将页面缓冲区中的数据立即显示。  Redirect:客户端浏览器的 URL 地址重定向。 在 Response 的常用方法中,Write 方法是最常用的方法,Write 能够向客户端发送指定的 HTTP 流, 并呈现给客户端浏览器,示例代码如下所示。 Response.Write("
这是一串HTML
"); 上述代码则会向浏览器输出一串 HTML 流并被浏览器解析,如图 13-3 所示。 当希望在 Response 对象运行时,能够中途进行停止时,则可以使用 End 方法对页面的执行过程进 图 13-3 Response.Write 方法 行停止,示例代码如下所示。 for (int i=0; i < 100; i++) { if (i < 10) { Response.Write("当前输出了第" + i + "行
"); //循环 100 次 //判断 i<10 //i<10 则输出 i //否则停止输出 } else { } } Response.End(); //使用了 End 方法停止执行 上述代码循环输出 HTML 流“当前输出了第 X 行”,当输出到 10 行时,则停止输出,如图 13-4 所示。 345
图 13-4 Response.End 方法 Redirect 方法通常使用于页面跳转,示例代码如下所示。 Response.Redirect("http://www.shangducms.com"); 执行上述代码,将会跳转到相应的 URL。 //页面跳转 13.1.3 Application 状态对象 Application 对象是 HttpApplication 类的实例,将在客户端第一期从某个特定的 ASP.NET 应用程序 虚拟目录中请求任何 URL 资源时创建。对于 Web 应用上的每个 ASP.NET 应用程序都要创建一个单独 的实例。然后通过内部 Application 对象公开对每个实例进行引用。 1.Application 对象的特性 对于 Application 对象有如下特性:  数据可以在 Application 对象之内进行数据共享,一个 Application 对象可以覆盖多个用户。  Application 对象可以用 Internet Service Manager 来设置而获得不同的属性。  单独的 Application 对象可以隔离出来并运行在内存之中。  可以停止一个 Application 对象而不会影响到其他 Application 对象。 Application 对象常用的属性有:  AllKey:获取 HttpApplicationState 集合中的访问键。  Count:获取 HttpApplicationState 集合中的对象数。 其中 Application 对象的常用方法有:  Add:新增一个 Application 对象变量。  Clear:清除全部的 Application 对象变量。  Get:通过索引关键字或变量名称得到变量的值。  GetKey:通过索引关键字获取变量名称。 346
 Lock:锁定全部的 Application 对象变量。  UnLock:解锁全部的 Application 对象变量。  Remove:使用变量名称移除一个 Application 对象变量。  RemoveAll:移除所有的 Application 对象变量。  Set:使用变量名更新一个 Application 对象变量。 2.Application 对象的使用 通过使用 Application 对象的方法,能够对 Application 对象进行操作,使用 Add 方法能够创建 Application 对象,示例代码如下所示。 Application.Add("App", "MyValue"); Application.Add("App1", "MyValue1"); Application.Add("App2", "MyValue2"); //增加 Application 对象 //增加 Application 对象 //增加 Application 对象 若需要使用 Application 对象,可以通过索引 Application 对象的变量名进行访问,示例代码如下所 示: Response.Write(Application["App1"].ToString()); //输出 Application 对象 上述代码直接通过使用变量名来获取 Application 对象的值。通过 Application 对象的 Get 方法也能 够获取 Application 对象的值,示例代码如下所示。 for (int i = 0; i < Application.Count; i++) { Response.Write(Application.Get(i).ToString()); } //遍历 Application 对象 //输出 Application 对象 Application 对象通常可以用来统计在线人数,在页面加载后可以通过配置文件使用 Application 对象 的 Add 方法进行 Application 对象的创建,当用户离开页面时,可以使用 Application 对象的 Remove 方 法进行 Application 对象的移除。当 Web 应用不希望用户在客户端修改已经存在的 Application 对象时, 可以使用 Lock 对象进行锁定,当执行完毕相应的代码块后,可以解锁。示例代码如下所示。 Application.Lock(); Application["App"] = "MyValue3"; Application.UnLock(); //锁定 Application 对象 //Application 对象赋值 //解锁 Application 对象 上述代码当用户进行页面访问时,其客户端的 Application 对象被锁定,所以用户的客户端不能够进 行 Application 对象的更改。在锁定后,也可以使用 UnLock 方法进行解锁操作。 13.1.4 Session 状态对象 Session 对象是 HttpSessionState 的一个实例,Session 是用来存储跨页程序的变量或对象,功能基本 同 Application 对象一样。但是 Session 对象的特性与 Application 对象不同。Session 对象变量只针对单一 网页的使用者,这也就是说各个机器之间的 Session 的对象不尽相同。 例如用户 A 和用户 B,当用户 A 访问该 Web 应用时,应用程序可以显式的为该用户增加一个 Session 值,同时用户 B 访问该 Web 应用时,应用程序同样可以为用户 B 增加一个 Session 值。但是与 Application 不同的是,用户 A 无法存取用户 B 的 Session 值,用户 B 也无法存取用户 A 的 Session 值。Application 对象终止于 IIS 服务停止,但是 Session 对象变量终止于联机机器离线时,也就是说当网页使用者关闭浏 览器或者网页使用者在页面进行的操作时间超过系统规定时,Session 对象将会自动注销。 1.Session 对象的特性 Session 对象常用的属性有: 347
 IsNewSession:如果用户访问页面时是创建新会话,则此属性将返回 true,否则将返回 false。  TimeOut:传回或设置 Session 对象变量的有效时间,如果在有效时间内有没有任何客户端动作, 则会自动注销。 注意:如果不设置 TimeOut 属性,则系统默认的超时时间为 20 分钟。 Session 对象常用的方法有:  Add:创建一个 Session 对象。  Abandon:该方法用来结束当前会话并清除对话中的所有信息,如果用户重新访问页面,则可 以创建新会话。  Clear:此方法将清除全部的 Session 对象变量,但不结束会话。 注意:Session 对象可以不需要 Add 方法进行创建,直接使用 Session[“变量名”]=变量值的语法也可 以进行 Session 对象的创建。 2.Session 对象的使用 Session 对象可以使用于安全性相比之下较高的场合,例如后台登录。在后台登录的制作过程中,管 理员拥有一定的操作时间,而如果管理员在这段时间不进行任何操作的话,为了保证安全性,后台将自 动注销,如果管理员需要再次进行操作,则需要再次登录。在管理员登录时,如果登录成功,则需要给 管理员一个 Session 对象,示例代码如下所示。 protected void Button1_Click(object sender, EventArgs e) { Session["admin"] = "guojing"; Response.Redirect("Session.aspx"); } //新增 Session 对象 //页面跳转 当管理员单击注销按钮时,则会注销 Session 对象并提示再次登录,示例代码如下所示。 protected void Button2_Click(object sender, EventArgs e) { Session.Clear(); Response.Redirect("Session.aspx"); } //删除所有 Session 对象 在 Page_Load 方法中,可以判断是否已经存在 Session 对象,如果存在 Session 对象,则说明管理员 当前的权限是正常的,而如果不存在 Session 对象,则说明当前管理员的权限可能是错误的,或者是非 法用户正在访问该页面,示例代码如下所示。 protected void Page_Load(object sender, EventArgs e) { if (Session["admin"] != null) { if (String.IsNullOrEmpty(Session["admin"].ToString())) { Button1.Visible = true; Button2.Visible = false; //Response.Redirect("admin_login.aspx"); } else { } Button1.Visible = false; Button2.Visible = true; //如果 Session[“admin”]不为空 //则判断是否为空字符串 //显式登录控件 //隐藏注销控件 //跳转到登录页面 //显式注销控件 //隐藏注销控件 348
} } 上述代码当管理员没有登录时,则会出现登录按钮,如果登录了,存在 Session 对象,则登录按钮 被隐藏,只显示注销按钮。其 HTML 代码如下所示。 上述代码运行后如图 13-5 和图 13-6 所示。 当再次单击【注销】按钮时则会清空 Session 对象,再次返回登录窗口时会呈现同图 13-5 所示。 图 13-5 登录前 图 13-6 登录后 13.1.5 Server 服务对象 Server 对象是 HttpServerUtility 的一个实例,该对象提供对服务器上的方法和属性进行访问。 1.Server 对象的常用属性 Server 对象的常用属性如下所示。  MachineName:获取远程服务器的名称。  ScriptTimeout:获取和设置请求超时。 通过 Server 对象能够获取远程服务器的信息,示例代码如下所示。 protected void Page_Load(object sender, EventArgs e) { Response.Write(Server.MachineName); } //输出服务器信息 上述代码运行后将会输出服务器名称,本例输出为“WIN-YXDGNGPG621”,这个输出结果根据 服务器的名称不同而不同。 2.Server 对象的常用方法 Server 对象的常用方法如下所示。  CreatObject:创建 COM 对象的一个服务器实例。  Execute:使用另一个页面执行当前请求。  Transfer:终止当前页面的执行,并为当前请求开始执行新页面。  HtmlDecode:对已被编码的消除 Html 无效字符的字符串进行解码。  HtmlEncode:对要在浏览器中显示的字符串进行编码。  MapPath:返回与 Web 服务器上的执行虚拟路径相对应的物理文件路径。  UrlDecode:对字符串进行解码,该字符串为了进行 HTTP 传输而进行编码并在 URL 中发送到 服务器。  UrlEncode:编码字符串,以便通过 URL 从 Web 服务器到客户端浏览器的字符串传输。 349
分享到:
收藏