简单理解:
软件部署到服务器上,这个运行的软件叫做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 service或sql 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 | 获取服务器的计算机名 |
方法 | 描述 |
Execute | 从一个页面执行另一个页面,控制权转回本页面 |
Transfer | 转向另一个页面,控制权不转回,留在转向页面 |
HTMLEncode | 将HTML标签作为文本表示出来 |
URLEncode | 对字符串进行url编码 |
MapPath | 将网站内的虚拟目录转换成实际的存储路径 |