ASP.NET的Application
ASP.NET的Application
1、Application的生存期
一个ASP.NET application创建于服务器第一次被请求时,在那之前不会有ASP.NET代码在执行。接受第一次请求后,一个HttpApplication实例池被创建,并激活了Application_OnStart事件。HttpApplication实例处理这个请求及随后发生的请求,直到最后的实例退出,接着就触发Application_OnEnd事件。
注意,在每一个实例中HttpApplication的Init以及Dispose方法都被调用,因此在Application_OnStart 和 Application_OnEnd事件间将被调用多次。在一个ASP.NET application中,只有这些事件在所有HttpApplication实例中被共享。
2、关于多线程(加锁)
如果我们以application范围类型使用对象,我们就应该注意ASP.NET是并发处理请求的,从而Application对象可以被多个线程所访问。因此,如果下面例子中的代码在同一时间被不同的客户机访问,它就是危险的,可能不会达到预期目的。为对照方便,我们列出了使用VB、C#以及JScript三种语言编写的代码:
C#
<%
Application["counter"] = (Int32)Application["counter"] + 1;
%>
VB
<%
Application("counter") = CType(Application("counter") + 1, Int32)
%>
为了实现安全的线程处理,我们可以通过Lock和Unlock方法处理这个Application对象。请看下面使用VB、C#以及JScript三种语言编写的代码:
C#
<%
Application.Lock();
Application["counter"] = (Int32)Application["counter"] + 1;
Application.UnLock();
%>
VB
<%
Application.Lock()
Application("counter") = CType(Application("counter") + 1, Int32)
Application.UnLock()
%>
3、文件Global.asax
除了编写UI(Use Interface:用户界面)以外,我们还可以在Web Application中添加"application"级别的控制逻辑代码以及事件触发程序。这些代码不会去操作产生UI,并且基本上不会响应于单独的页面请求,它们负责的是处理高级别的application事件,包括Application_Start、Application_End、Session_Start和Session_End。这些控制逻辑代码位于Web
application所在虚拟目录结构根目录下的Global.asax文件中,ASP.NET自动地解析这个文件并编译为动态.NET框架类。这个类扩充了HttpApplication基类,当位于application名字空间内的任意资源或URL被首次访问时,它就被创建。
Global.asax文件本身经过了设置,任何关于它的直接URL请求都会被自动拒绝,从而保证了外部用户无法下载它并浏览其内容。
Application 或 Session作用范围内的事件
我们可以在Global.asa文件中编写方法以定义有关HttpApplication基类的事件触发程序,方法的命名要匹配于字符串"Application_事件名称"。比如,请看下面使用VB、C#以及JScript三种语言编写的代码:
C#
<script language="C#" runat="server">
void Application_Start() {
// Application startup code goes here
}
</script>
VB
<script language="VB" runat="server">
Sub Application_Start()
’ Application startup code goes here
End Sub
</script>
下面的例子图解了Application、Session 和Request 的生存期:
页面首次打开时,将激活application和session的Onstart事件。关于这些事件触发程序,请看下面使用VB、C#以及JScript三种语言编写的代码:
C#
void Application_Start() {
Response.Write("Application is Starting...");
}
void Session_Start() {
Response.Write("Session is Starting...");
Session.Timeout = 1;
}
VB
Sub Application_Start()
Response.Write("Application is Starting...")
End Sub
Sub Session_Start()
Response.Write("Session is Starting...")
Session.Timeout = 1
End Sub
每次请求发生时,都会激活BeginRequest 和EndRequest 事件。比如,当页面被刷新时,来自BeginRequest、EndRequest
和Page_Load 方法的信息将显现出来。注意,当放弃当前的session时(点击"End this session"按钮),将产生一个新session,接着再次触发Session_OnStart事件。
ASP.NET的Application相关推荐
- Creating a LINQ Enabled ASP.NET Web application template using C#.[转]
原文地址:http://www.wwwcoder.com/Weblogs/tabid/283/EntryID/839/Default.aspx 其他相关地址:Building and using a ...
- ASP.NET中application对象的用法(面试题)
ASP.NET中application对象的用法 本文导读:Application对象是HttpApplicationState类的一个实例,Application状态是整个应用程序全局的.Appli ...
- 学习ASP.NET-初探Application状态
学习ASP.NET-初探Application状态 - 上一篇<浅谈TeeChart组件在ASP中的应用>下一篇<用IS6进行ASP软件的打包和自动安装(补充)>字体: 小|中 ...
- php 实现application,PHP中实现ASP中的Application 功能
[PHP中实现ASP中的Application 功能] /* 作者: 何志强[hzq@chinaasp.com hhzqq@21cn.com] 主页: http://www.phpchina.com/ ...
- ASP.NET之Application、Session和Cookie的差别
在Asp.net中Application.Session和Cookie都能够保存信息,那么它们有什么不同呢? 一.首先Application是在server端建立一个状态变量,存储于server的全局 ...
- ASP.NET使用Application对象实现漂流瓶
ASP.NET使用Application对象实现漂流瓶 最后实现效果 其实也很简单 //扔一个button中代码protected void Button1_Click(object sender, ...
- 比较.ASP.NET中Application,Session,Cookie,ViewState和Cache
在ASP.NET中,有很多种保存信息的内置对象,如:Application,Session,Cookie,ViewState和Cache等.下面分别介绍它们的用法和区别. 方法 信息量大小 作用域和保 ...
- Classic ASP 系列(3) Application 对象
A group of ASP files that work together to perform some purpose is called an application. The Applic ...
- Asp.net中Application Session Cookie ViewState Cache
Application 1. Application用来保存所有用户共用的信息 2. 在Asp时代,如果要保存的数据在应用程序生存期内不会或者很少发生改变,那么使用Ap ...
最新文章
- Fragment的运用实列
- JAVA程序运行原理分析
- javadoc时候乱码-编码 GBK 的不可映射字符 - wqjsir的专栏 - 博客频道 - CSDN.NET
- python summary writer_tensorflow中summary操作
- LoadRunner常遇见的问题
- 项目管理excel_项目管理甘特图是什么?怎么做才能更高效?(EXCEL制作甘特图详细步骤)...
- 转行经验分享,关于软件测试的感悟,你想知道的都在这里……
- 使用docker优雅的部署你的nuxtjs项目
- C++继承:公有,私有,保护
- cvpr常用资源整理
- Java自定义拦截器详细教程
- 用户故事与敏捷方法—估算故事(实战三)
- 前端图片文件压缩方案
- google aviator:轻量级Java公式引擎
- 腾讯云TRTC —— 实时音视频完整案例 音视频+共享屏幕直播
- 互联网协议 — 802.1q VLAN 虚拟局域网协议
- JS--JS运行三部曲--渡一教育(视频笔记)
- java 调页储存_java调用存储过程
- 消逝的Coin:Stratum协议劫持技术
- asp毕业设计——基于asp+access的网上选题系统设计与实现(毕业论文+程序源码)——网上选题系统