知识大全 Global.asax使用介绍
Posted 知
篇首语:不怕读得少,只怕记不牢。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Global.asax使用介绍相关的知识,希望对你有一定的参考价值。
Global.asax使用介绍 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
从HttpApplication派生的Global 类有很多用处 包括管理应用程序状态和请求状态
Visual Studio NET 创建的global asax文件为每个web 应用程序生成一个从HttpApplication类派成的Global类 这个类包含很多事件处理程序 例如Application_Start和 Session_Start
或许有人认为每个web应用程序只有一个Global类的实例 事实上 在大多数应用程序框架中 代表 Application 的对象都是singleton – 就是说只有一个实例存在 我们也知道ASP NET运行时只有在应用程序开始的时候才调用Application_Start事件处理方法 所有这些好像都在暗示 在我们的ASP NET Web应用程序中只有一个Global对象的实例 但是所有这些确确实实是误导!
ASP NET 运行时(ASP NET runtime 以下简称 运行时 )维护了一个HttpApplication对象池 当一个请求进来的时候 运行时从该池中取出一个HttpApplication对象来服务于当前请求 该HttpApplication对象一直和该请求相关联 且只和该请求相关联 直到请求被处理完毕 当请求完成后 运行时把该对象归还到池中 稍后会从池中再次取出去服务于另外的请求 但一个请求每次只能和某一个HttpApplication对象相关联
Application State VS Request State
Application对象(HttpApplicationState 类型 译者按 Application对象是HttpApplication类的一个属性 是web应用程序全局唯一的 web应用程序第一次有请求进来的时候创建的) 是我们在web应用程序内保存全局信息的地方 Application对象是一个很方便的保存全局信息的地方 例如保存数据库的连接字符串
private void Page_Load(object sender System EventArgs e)
string connectionString = Application[ ConnectionString ] ToString();
你也可以在HttpApplication类中声明静态成员变量来保存应用程序状态信息 例如 上例中的数据库连接字符串可以用如下方式保存
public class Global : System Web HttpApplication
public static readonly string ConnectionString = connection information ;
可以在ASP NET代码的任何地方访问该静态成员变量 例如:string connectionString = Global ConnectionString;
非常重要的一点是 如果你想让该字符串可以全局范围内被访问到 则该字符串必须声明为静态成员变量(你也可以创建一个静态的属性)
相反 如果你在Global类型使用一般成员变量(非静态) 则只能用来保存请求状态 举个例子来说明 下面的代码将在调试窗口中输出所有请求的处理时间(毫秒)
public class Global : System Web HttpApplication
protected DateTime beginRequestTime;
protected void Application_BeginRequest(Object sender EventArgs e)
beginRequestTime = DateTime Now;
protected void Application_EndRequest(Object sender EventArgs e)
string messageFormat = Elapsed request time (ms) = ;
TimeSpan diffTime = DateTime Now beginRequestTime;
Trace WriteLine(
String Format(messageFormat diffTime TotalMilliseconds ) );
好 现在让我们回到上面关于保存应用程序状态的话题 那个方法更好的呢 在Application对象中保存对象的引用 还是在Global类中声明静态成员或属性?各种方式各有优劣 在Global类中保存全局静态成员可以使你的数据访问具有强类型 不象Application对象 你不需要进行类型转换 下面的代码说明了它们的区别
DataSet cachedData = (DataSet)Application[ MyDataSet ];
string myString = Application[ MyString ] ToString();
DataSet cachedData = Global MyDataSet;
string myString = Global MyString;
强类型使你的的代码更加清晰和强壮 在应用程序性能要求比较高的情况下 这种方式可以避免运行时类型转换带来的性能损失 如果你保存的是值类型的数据 强类型还可以避免装箱(boxing)和卸箱(unboxing)所带来的性能损失 另外 Application对象还有因为线程同步造成的锁定所带来的性能上问题 如果你的全局数据只初始化一次 再也不会改变 使用Global类中的静态成员可以避免锁定带来的性能损失 但 如果你采用了这种方式 强烈推荐你使用访问器(属性) 以保证该变量是只读的 如果你既要读又要写在Global类中的静态成员变量 记住要保证线程安全 Application对象通过获取读写锁已经内在的提供了线程安全保证
比较安全的初始化全局静态成员变量的地方是在Application_Start事件处理程序中 即使全局范围有很多个Global对象的实例 运行时只会在Global对象第一次创建的时候调用Application_Start事件处理程序
cha138/Article/program/net/201311/12735相关参考
ASP.NET中使用Global.asax文件 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! G
知识大全 2.6.2 Global.asax包含整个站点都可以使用的代码
2.6.2Global.asax包含整个站点都可以使用的代码 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看
在面试时,我们经常会被要求自我介绍,所谓自我介绍,就是把自已介绍给出别人,以使别人认识自已,所以恰到好处的自我介绍,可以大大提高面试的好感。1.了解自我介绍的分类自我介绍根据介绍人的不同,可以分为主动
有人在武清么,介绍介绍工作工作这里是没有的你要去求职网站去投递简历的你也可以去你附近的劳务公司去看看机会的有什么港剧好看?介绍介绍使徒行者,忠奸人,溏心风暴,我的如意狼君,九五至尊,溏心风暴之家好月圆
求职面试自我介绍攻略在面试时,我们经常会被要求自我介绍,所谓自我介绍,就是把自已介绍给出别人,以使别人认识自已,所以恰到好处的自我介绍,可以大大提高面试的好感。1.了解自我介绍的分类自我介绍根据介绍人
介绍的顺序,位低者先。这一点最重要,就是谁先介绍,该介绍时你不介绍有时候挺麻烦。根据公关礼仪的惯例,地位低者先介绍。比如,主人要先向客人把自己介绍一下;公关人员要把自己向贵宾作一个介绍;男士要把自己向
介绍的顺序,位低者先。这一点最重要,就是谁先介绍,该介绍时你不介绍有时候挺麻烦。根据公关礼仪的惯例,地位低者先介绍。比如,主人要先向客人把自己介绍一下;公关人员要把自己向贵宾作一个介绍;男士要把自己向
在找工作面试时,我们首先是会被要求先做自我介绍,看似比较简单,就是把自已介绍给出别人,以使别人认识自已,所以恰到好处的自我介绍,可以大大提高面试的好感。那么求职面试自我介绍技巧就显得尤为重要了。要做好
总体介绍包括12属55种。弯嘴犀鸟属Tockus分布于非洲,有14种:白冠弯嘴犀鸟Tockusalbocristatus、黑弯嘴犀鸟Tockushartlaubi、红弯嘴犀鸟Tockuscamurus
在面试时,我们经常会被要求自我介绍,所谓自我介绍,就是把自已介绍给出别人,以使别人认识自已,所以恰到好处的自我介绍,可以大大提高面试的好感。1.了解自我介绍的分类自我介绍根据介绍人的不同,可以分为主动