当前位置: 首页 > 编程日记 > 正文

Global.asax详解

在网上找了N多相关的东西总说的不够细,现在终于找到了.可以了解web.cofig和Global.asax之间的关系以及执行的顺序.

在Global.asax.cs文件中

protected void Application_BeginRequest(Object sender, EventArgs e)
{
   Application["StartTime"] = System.DateTime.Now;
}

再在webform1中的page_load事件中添加
private void Page_Load(object sender, System.EventArgs e)
{
   System.DateTime startTime = (System.DateTime)Application["StartTime"];
   System.DateTime endTime = System.DateTime.Now;
   System.TimeSpan ts = endTime - startTime;
   Response.Write("页面执行时间:"+ ts.Milliseconds +" 毫秒");
}

如果是05版本中,就要手动添加了,自己在App_Code中添加Global.asax.cs,然后设置Global.asax的属性Inherits="Global"或CodeBehind="Global.asax.cs"即可<%@ Application Language="C#" Codebehind="Global.asax.cs" %>

以上测试在03/05均通过.

以下转对Global.asax文件的了解

1 Global.asax文件的作用

先看看MSDN的解释,Global.asax 文件(也称为 ASP.NET 应用程序文件)是一个可选的文件,该文件包含响应 ASP.NET 或HTTP模块所引发的应用程序级别和会话级别事件的代码。Global.asax 文件驻留在 ASP.NET 应用程序的根目录中。运行时,分析 Global.asax 并将其编译到一个动态生成的 .NET Framework 类,该类是从HttpApplication基类派生的。配置 ASP.NET,以便自动拒绝对 Global.asax 文件的任何直接的 URL 请求;外部用户不能下载或查看其中的代码。Global.asax 文件是可选的。只在希望处理应用程序事件或会话事件时,才应创建它.

2 Global.asax文件的创建

点击Web站点>>添加新建项>>全局应用程序类,即可添加Global.asax文件。在.Net2003里,直接右击Global.asax文件查看代码就可以编辑Global.asax.cs文件,但是在.Net2005中,没有这个选项,因此需要自己在App_Code中添加Global.asax.cs,然后设置Global.asax的属性Inherits="Global"或CodeBehind="Global.asax.cs"即可。不可知道还有没有其他更好的方法。

3 Global.asax文件的执行

例如,IIS现在接到一个访问ASP.NET应用程序的请求,这时候IIS会将这个请求映射给aspnet_isapi.dll,当aspnet_isapi.dll接到这个请求后,会新建一个aspnet_wp.exe的进程(windows server 2003下是w3wp.exe进程),这个进程会将请求传递给一个被指定的AppDomain,当这个AppDomain被创建时,就会去加载一些配置文件中的信息(加载顺序是从machine.config文件到web.config文件中的一些相关配置),而当这些信息都被加载以后,AppDomain会去获得一个HttpApplication的实例,这个时候global类就会被编译加载了,接下来AppDomain会做一些相关的处理创建Page类的实例,最后这个页面呈现到客户端浏览器上。但这里有一点问题需要注意,当配置文件被加载的时候,并不是表示AppDomain会加载配置文件中所有的信息,而仅是加载一些需要的信息。而有些配置信息是在需要时,才会被AppDomain加载。例如我们在web.config文件中配置了很多HttpModule,但是仅当每一个HttpModule被访问到时,AppDomain才会去加载并处理这些信息。所以说web.config文件和global没有先后执行的顺序,只是视具体的信息什么时候会被加载和处理。

4 Global.asax.cs中的方法的含义

Application_Init:在每一个HttpApplication实例初始化的时候执行

Application_Disposed:在每一个HttpApplication实例被销毁之前执行

Application_Error:所有没有处理的错误都会导致这个方法的执行

Application_Start:在程序初始化的时候执行。在Web应用程序的生命周期里就执行一次,这里只能放一些公用的信息,比如HttpApplicationState。

Application_End:应用程序结束时,在最后一个HttpApplication销毁之后执行。对应Application_Start,在整个生命周期里面也是只执行一次。

Session_Start:会话开始时执行。

Session_End:会话结束或过期时执行。

Application_BeginRequest:BeginRequest是在收到Request时第一个触发的事件,这个方法第一个执行。

Application_AuthenticateRequest:当安全模块已经建立了当前用户的标识后执行。

Application_AuthorizeRequest:当安全模块已经验证了当前用户的授权时执行。

Application_ResolveRequestCache:当ASP.NET完成授权事件以使缓存模块从缓存中为请求提供服务时发生,从而跳过处理程序(页面或者是WebService)的执行。这样做可以改善网站的性能,这个事件还可以用来判断正文是不是从Cache中得到的。

Application_AcquireRequestState:当ASP.NET获取当前请求所关联的当前状态(如Session)时执行。

Application_PreRequestHandlerExecute:当ASP.Net即将把请求发送到处理程序对象(页面或者是WebService)之前执行。这个时候,Session就可以用了。

Application_PostRequestHandlerExecute:当处理程序对象工作完成后执行。

Application_ReleaseRequestState:在ASP.NET执行完所有请求处理程序后执行。ReleaseRequestState事件将使当前状态数据被保存。

Application_UpdateRequestCache:在ASP.NET执行完处理程序后为了后续的请求而更新响应缓存时执行。

Application_EndRequest:同上,EndRequest是在响应Request时最后一个触发的事件,这个方法自然就是最后一个执行的了。

Application_PreSendRequestHeaders:向客户端发送Http标头之前执行。

Application_PreSendRequestContent:向客户端发送Http正文之前执行。

Request相应的事件执行顺序:

1.BeginRequest 2.AuthenticateRequest 3.AuthorizeRequest 4.ResolveRequestCache 5.AcquireRequestState6.PreRequestHandlerExecute 7.PostRequestHandlerExecute 8.ReleaseRequestState 9.UpdateRequestCache10.EndRequest

转载于:https://www.cnblogs.com/puzi0315/archive/2012/08/06/2624420.html

相关文章:

Openfire服务器的安装部署

Openfire是一个强大的即时消息&#xff08;IM&#xff09;和聊天服务器&#xff0c;它实现了XMPP协议,可以使用它轻易的构建高效率的即时通信服务器. 其安装和部署都十分简单&#xff0c;并利用Web进行管理。单台服务器可支持上万并发用户&#xff0c;由于是采用开放的XMPP协议…

【直播】耿远昊:Pandas入门讲解(安泰第四届数据科学训练营)

Pandas入门讲解 直播信息 主讲人&#xff1a;耿远昊&#xff0c;Datawhale成员&#xff0c;joyful-pandas作者。 直播时间&#xff1a;2021年04月07日 20:00~21:00 直播内容&#xff1a; 时间序列中的必知必会&#xff1a;深入理解时间对象掌握滑动窗口熟悉重采样操作 直播…

女生参加软件测试培训合适吗

女生参加软件测试培训合适吗?这个问题困扰着很多女性朋友&#xff0c;大部分女性觉得软件测试属于IT技术行业&#xff0c;学起来是比较麻烦的&#xff0c;不知道是否适合女性&#xff0c;我们来看看下面的详细介绍。 女生参加软件测试培训合适吗?当然合适&#xff0c;如果说要…

三、概念数据模型CDM(Conceptual Database Model )

最后整理一下正确的是&#xff1a; 脚本1&#xff1a; .set_value(_First, true, new) .foreach_part(%Name%, "#") .if (%_First%) .delete(%CurrentPart%) .enddelete.set_value(_First, false, update) .else %CurrentPart% .endif .next 这个例子是把Name内容的…

【第11周复盘】小朋友们 100% 闯关成功!

「青少年编程竞赛交流群」已成立&#xff08;适合6至18周岁的青少年&#xff09;&#xff0c;公众号后台回复【Scratch】或【Python】&#xff0c;即可进入。如果加入了之前的社群不需要重复加入。 微信后台回复“资料下载”可获取以往学习的材料&#xff08;视频、代码、文档&…

keepalived and heartbeat

Keepalived使用的vrrp协议方式&#xff0c;虚拟路由冗余协议 (Virtual Router Redundancy Protocol&#xff0c;简称VRRP)&#xff1b;Heartbeat是基于主机或网络的服务的高可用方式&#xff1b;keepalived的目的是模拟路由器的双机heartbeat的目的是用户service的双机lvs的高可…

ui设计师要养成哪些职场习惯呢?

很多参加UI设计培训学完后的同学&#xff0c;都比较担心后期找工作的问题&#xff0c;不知道自己在职场中应该如何应对&#xff0c;小编本期为大家详细的介绍一下ui设计师要养成哪些职场习惯呢?希望能够帮助到大家在职场中更好的表现。 UI设计培训分享&#xff1a;ui设计师要养…

Html-Css 从入门到放弃(一)基础知识

注意要点&#xff1a; 1、ID属性不要以数字开头&#xff0c;数字开头的ID在 Mozilla/Firefox 浏览器中不起作用。 2、class 选择器用于描述一组元素的样式&#xff0c;class 选择器有别于id选择器&#xff0c;class可以在多个元素中使用。 3、不要在属性值与单位之间留有空格。…

六一:如何在Datawhale开源学习小程序中管

我们的组队学习马上就要开营了&#xff0c;本次组队学习与以往不同的是小程序中增加了队伍管理的功能。 为了方便大家组队&#xff0c;Datawhale的 六一同学 为大家准备了在Datawhale开源学习小程序中队伍管理的教程。 一、进入课程详情界面 1、打开小程序主页后&#xff0c…

C#让windows程序只运行一次

方法一&#xff1a;使用Mutex来进行1&#xff0e;首先要添加如下的namespace&#xff1a; using System.Threading;2&#xff0e;修改系统Main函数&#xff0c;大致如下&#xff1a; bool bCreatedNew;//Create a new mutex using specific mutex nameMutex m new Mutex(…

java培训分享:学习Java需要什么软件

在参加java培训过程中学习java技术&#xff0c;需要用到很多辅助工具&#xff0c;这些辅助工具是具有多功能性和实用性的&#xff0c;从代码构建到bug压缩。学习这些工具可以帮助您提高代码的质量&#xff0c;并成为一个更高效的Java开发人员。那么具体学习Java需要什么软件呢?…

J2SE基础夯实系列之数组

java中经常使用的是数组&#xff0c;前一段时间突然忘记了怎么定义char类型的二位数组&#xff1a; char[][] c {{},{},{A,B,C},{D,E,F},{G,H,I},{J,K,L},{M,N,O},{P,Q,R,S},{T,U,V},{W,X,Y,Z},};这个是char型的二维数组&#xff0c;思考一下&#xff0c;如果是定义String的二…

【组队学习】【24期】Datawhale组队学习内容介绍

第24期 Datawhale 组队学习活动马上就要开始啦&#xff01; 本次组队学习的内容为&#xff1a; 零基础入门语音识别&#xff08;食物声音识别&#xff09;Docker教程数据挖掘实践&#xff08;智慧海洋&#xff09;集成学习&#xff08;中&#xff09;河北邀请赛&#xff08;二…

centos5.6 (64bit)编译安装vsftpd-2.3.4的配置(两种用户登录)[连载之电子商务系统架构]...

centos5.6 (64bit)编译安装vsftpd-2.3.4的配置(两种用户登录)出处&#xff1a;http://jimmyli.blog.51cto.com/我站在巨人肩膀上Jimmy Li 作者&#xff1a;Jimmy Li关键词&#xff1a;电子商务&#xff0c;系统架构&#xff0c;vsftpd&#xff0c;本地用户登录&#xff0c;虚拟…

什么叫PMP?项目管理的本质是什么?

什么叫PMP?项目管理的本质是什么?相信有很多人现在对这个问题还不是非常了解&#xff0c;小编下面就为大家做下详细的介绍。 什么叫PMP?项目管理的本质是什么?什么叫PMP?PMP&#xff0c;中文全名是项目管理专业人士资格认证。 PMP是目前在项目管理这个领域认同度较高的一门…

基于C#的UDP协议的同步实现

一、摘要 总结基于C#的UDP协议的同步通信。 二、实验平台 Visual Studio 2010 三、实验原理 UDP传输协议同TCP传输协议的区别可查阅相关文档&#xff0c;此处不再赘述。 四、实例 4.1 采用socket实现UDP 由于UDP是一种无连接的协议。因此&#xff0c;为了使服务器应用能够发送和…

【直播】杨剑砺:数据可视化漫谈

数据可视化漫谈 目前 安泰第四届数据科学训练营 正在如火如荼的进行中。为了大家更好的学习&#xff0c;杨剑砺将为大家带来一场直播分享 —— 数据可视化漫谈。 直播信息 主讲人&#xff1a;杨剑砺&#xff0c;Datawhale成员&#xff0c;外企数据分析师。 直播时间&#xf…

service 与chkconfig

需要把启动脚本放到/etc/init.d/里面&#xff0c;还要加权限chmod x mysqld 本文转自flayber 51CTO博客&#xff0c;原文链接&#xff1a;http://blog.51cto.com/406647516/1919335&#xff0c;如需转载请自行联系原作者

从事软件测试为什么要学自动化?

软件测试要学习的知识是有很多的&#xff0c;虽然听起来简单&#xff0c;但是细节知识还是很多的&#xff0c;尤其是软件测试自动化这块&#xff0c;那么就有人问了&#xff0c;从事软件测试为什么要学自动化?来看看下面的详细介绍就知道了。 从事软件测试为什么要学自动化?首…

【直播】黎佳佳:音频数据分析以及特征提取

音频数据分析以及特征提取 目前 Datawhale第24期组队学习 正在如火如荼的进行中。为了大家更好的学习“零基础入门语音识别&#xff08;食物声音识别&#xff09;”的课程设计者 黎佳佳&#xff0c;将为大家带来一场直播分享——音频数据分析以及特征提取。 直播信息 主讲人&…

电机相电压重构

利用svpwm的输出和当前的直流母线电压&#xff0c;计算出相电压参考TI文档phase_volt_calc.pdf注&#xff1a;该文章未考虑死区和管压降的影响 转载于:https://www.cnblogs.com/iable/archive/2012/08/08/4206882.html

ui设计的文字怎样提高设计感呢?

相信很多做UI设计师的小伙伴们&#xff0c;在工作的时候经常会遇到一些瓶颈&#xff0c;例如设计的构思&#xff0c;文字的改动都是让人头疼的事情&#xff0c;下面小编本期就为大家分享一个ui设计的文字怎样提高设计感。 UI设计培训分享&#xff1a;ui设计的文字怎样提高设计感…

SSL之CA证书颁发机构安装图文详解

上一节我们说到&#xff0c;在验证公钥安全性时&#xff0c;是在CA机构颁发的包含用户的公钥及其身份信息的数字证书,数字证书由权威机构——CA签发。这个CA权威机构可以是自己的服务器也可以是国际公认的CA权威机构。下面我就来讲一下CA证书颁发机构 如果你需要在组织里发布ex…

【组队学习】【24期】零基础入门语音识别(食物声音识别)

零基础入门语音识别&#xff08;食物声音识别&#xff09; 开源内容&#xff1a; https://github.com/datawhalechina/team-learning-nlp/tree/master/FoodVoiceRecognition 比赛地址&#xff1a; https://tianchi.aliyun.com/competition/entrance/531887/introduction 基…

同时使用多网卡提升树莓派网络利用率

树莓派 3 自带的有线网卡是 100M 的&#xff0c;无线网卡是 72M 的&#xff0c;都比较慢。想提升网速的话&#xff0c;最直接的方法是使用 usb 网卡&#xff0c;千兆的有线网卡或者 450M 以上的 2.4GHz 无线网卡或者 5GHz 无线网卡。但因为树莓派 3 的 usb 接口是 2.0 的&#…

Python培训基础教程都教哪些

根据相关数据统计&#xff0c;目前学习Python技术的同学大多数是零基础&#xff0c;都是从其他行业转型来学习的&#xff0c;那么Python培训基础教程都教哪些呢?好不好学呢?来看看下面的详细介绍。 Python培训基础教程都教哪些? 1、面向对象 类和对象、类的定义格式、添加和…

sqlce wp from查询语句详解

http://msdn.microsoft.com/zh-cn/library/bb383978(vvs.110).aspx from 子句&#xff08;C# 参考&#xff09; Visual Studio 2012其他版本此主题尚未评级 - 评价此主题[本文档仅供预览&#xff0c;在以后的发行版中可能会发生更改。包含的空白主题用作占位符。] 查询表达式必…

【直播】王茂霖:二手车交易价格预测-千变万化特征工程(河北高校数据挖掘邀请赛)

二手车交易价格预测-千变万化特征工程 目前 河北高校数据挖掘邀请赛 正在如火如荼的进行中。为了大家更好的参赛&#xff0c;王茂霖分享了 从0梳理1场数据挖掘赛事&#xff01;&#xff0c;完整梳理了从环境准备、数据读取、数据分析、特征工程到数据建模的整个过程。04月20日晚…

微软在C# 8中引入预览版可空引用类型

微软已经为开发者提供了预览版的可空引用类型&#xff08;Nullable Reference Type&#xff09;&#xff0c;想尝鲜的开发者可以尝试这个新特性&#xff0c;并提供反馈。\\预览版可空引用类型是Visual Studio 2017 15.5 Preview 4的Roslyn扩展&#xff0c;现在支持.NET框架&…

制作ui设计作品集要注意哪些

UI设计作品集的作用是非常大的&#xff0c;不要小看&#xff0c;它可以用来展示自身的UI设计实力&#xff0c;参加完UI设计培训后找工作当然也是非常重要的一个环节&#xff0c;下面小编就为大家详细的介绍一下制作ui设计作品集要注意哪些问题? UI设计培训分享&#xff1a;制作…