【ASP.NET】——Application、Server和Session对象

来源:互联网 发布:魔兽世界月卡 知乎 编辑:程序博客网 时间:2024/04/28 22:10


简单理解:

软件部署到服务器上,这个运行的软件叫做Application

每个客户端与服务器的一个交互,我们叫做会话Session

这个服务器对象叫做Server


Application是应用程序级别对象,相当于全局变量,各个Session之间共享数据。

Session是会话级别对象。打开一个网站即建立一个Session对象,关闭网站的同时这个Session对象也就销毁了。


再这还要提一下Global.asax文件

  Global.asax文件也称ASP.NET应用程序文件。改文件包含响应ASP.NET或HTTP模板所引发的应用程序级和会话级的代码。

  Global.asax文件继承自HttpApplication类,维护一个HttpApplication对象池,并在需要时将对象池中的对象分配给应用程序。


Global.asax文件的功能、作用。

存储于应用程序的根目录中

定义应用程序的边界

初始化应用程序级或会话级变量

连接数据库

发送Cookie

处理应用程序级会话级别的变量以及事件,变量为全局变量


Global.asax的常用事件

Application_OnStart

在调用当前程序目录(或子目录)的第一个ASP.NET页面时激发。

Application_OnEnd

在应用程序最后一个会话结束时激发。此外,在使用Internet服务管理器管理单元停止Web应用程序时也会激发

Session_OnStart

在每次新的会话开始时激发

Session_OnEnd

在会话结束时激发。

Application_Error

当在web应用程序中未经处理的错误,这个时间就会引发。可以捕获整个应用程序中的所有未处理的异常,这时你可以把这些异常信息存储在一个log文件中,以便跟踪管理。

Application_OnBeginRequest

asp.net应用程序的每个请求都会引发该事件,他发生在页面web服务和其他任何http处理程序请求之前。

Application_OnAuthenticateRequest

该事件发生asp.net准备对请求指向认证时,该事件很容易为asp.net建立自定义的身份验证系统

Application_OnAuthorizeRequest

该事件发生在asp.net准备授权一个请求资源的访问权限时

Application_OnResolveRequestCache

asp.net有一个强大的页面和web服务输出高速缓存的功能,页面可以在执行一次后静态的保存起来,以供以后的请求使用。该事件就是在asp.net准备确定是否从cache中处理请求是触发的

Application_OnAcquireRequestState

这个事件是在asp.net准备从进程中及进程外window servicesql server中获得session状态数据时引发的。

application_OnPreRequestHandleExecute

在请求的处理程序调用之前引发

Application_OnPostRequestHandleExecute

在处理程序完成了对请求的处理之后引发的,这之后response对象把数据送回客户端

Applicaiton_OnReleaseRequestState

用来释放session数据并在必要时更新储存器的

Applicaiton_OnUpdateRequestCache

asp.net用当前请求更新高速缓存时发生

Application_OnEndRequest

这是请求完成所引发的最后一个事件

Application_OnPreSendRequestsHeaders

http标题发送到请求的客户端之前发生

Application_OnPreSendRequestContent

http主体发送到请求的客户端之前发生

Applicaton_OnDisposed

这一事件是在asp.net应用程序最终关闭,而且clr从内存中删除了asp.net应用程序时引发的



Application对象

因为application对象在多个session中共享变量,所以常采用下面的方法保证资源的争抢

Application.Lock();//修改应用程序变量值的代码//Lock方法将锁定脚本中的所有变量//确保只有当前用户控制该页面//当调用UnLock方法时当前用户将失去对应用程序的控制Application.UnLock();

application对象在第一次请求页面时建立,可保存各个对象共享的全局变量数据。

存储数据时变量的类型为object,可存储任何类型的变量。


Session对象

特点:

Session对于每个客户端(可以说每个浏览器的实例)是“人手一份”的,用户首次与web服务建立连接的时候,服务器会给用户发一个SessionID作为标识。

SessionID是一个由24个字符组成的随机字符串。用户每次提交页面,浏览器都会把这个SessionID包含在HTTP头中提交给Web服务器,这样Web服务器就能区分当前请求页面的是哪一个客户端。

Session对象的功能由HttpSessionState类提供,每个用户的会话事件都具有该类的一个实例。


属性

描述

SessionID

唯一用户会话标识符

TimeOut

用户超时

LCID

本地标识符

IsNewSession

如果已使用当前请求创建会话,则返回True

Item

会话值的名称

Count

会话状态集合中的项目数



Server对象

是获取当前请求的内部服务器对象,可以直接理解成是获取服务器信息的对象。

属性

描述

ScriptTimeout

设置一个asp脚本执行的超时时间即脚本所允许的最长执行时间

MachineName

获取服务器的计算机名


ScriptTimeout属性用于设置一个ASP脚本执行的超时时间即脚本所允许的最长执行时间,如果在指定的时间内脚本没有执行完毕,系统将停止其执行并且显示超时错误,应用该属性主要是用来防止一些可能进入死循环的程序导致页面服务器过载的问题

方法

描述

Execute

从一个页面执行另一个页面,控制权转回本页面

Transfer

转向另一个页面,控制权不转回,留在转向页面

HTMLEncode

HTML标签作为文本表示出来

URLEncode

对字符串进行url编码

MapPath

将网站内的虚拟目录转换成实际的存储路径



3 0
原创粉丝点击