如何在ASP.NET应用程序中初始化(6)_ASP教程

编辑Tag赚U币
教程Tag:暂无Tag,欢迎添加,赚取U币!

推荐:程序员看淘宝,如何用Session保存用户状态
网上购物已经成为现在生活不可缺少的一部分。我们上淘宝只是为了消费,今天换一个角度,用程序员的眼光看看淘宝。 如上图: 情况一:当打开一些和账户有关的网页,检测用户没有登录,系统自动会跳转到登录界面。 情况二:当检测到已经有用户登录,页面会自动跳转到目的

前面介绍了4种在ASP.NET执行初始化的方法,你或许想知道它们到底有哪些区别呢?

由于它们都能实现初始化的操作,它们的差别也只有执行的时刻不同而已,我们可以用简单的方法区分它们的调用位置:看异常的调用堆栈信息。

AppInitialize方法异常时的调用堆栈信息:

如何在ASP.NET应用程序中初始化

HttpModule异常时的调用堆栈信息:

如何在ASP.NET应用程序中初始化

PreApplicationStartMethodAttribute异常时的调用堆栈信息:

如何在ASP.NET应用程序中初始化

Global.asax的Application_Start事件处理器的调用方式则不同,ASP.NET采用了反射调用,当异常发生只保留了内部异常,我们看不到调用堆栈(不信的话,自己去试试)。

没关系,既然ASP.NET不告诉我们调用堆栈信息,我们自己也可以去取,请看下面的代码:

  1. void Application_Start()  
  2. {  
  3.     System.Diagnostics.StackTrace stack = new System.Diagnostics.StackTrace();  
  4.     System.IO.File.WriteAllText("h:\\Application_Start_stack.txt", stack.ToString());  
  5. }  

再打开文件看一下吧。

如何在ASP.NET应用程序中初始化

说明:Global.asax的Application_Start事件处理器还有几种等效的方法:

  1. // 这二个方法都可以实现与Application_Start(object sender, EventArgs e)相同的行为。  
  2.  
  3. void Application_OnStart()  
  4. {  
  5. }  
  6.  
  7. void Application_Start()  
  8. {  
  9. }  

根据以上分析,可以可以得知:

1. AppInitialize和PreApplicationStartMethodAttribute指向的方法被调用的时机发生在ASP.NET创建宿主环境时,属于比较早的时刻。

2. Application_Start和HttpModule的调用时刻要晚一点。

这个结论有用吗?

其实我也感觉意义不大,不过分析它仅仅为了满足我的求知欲和好奇心而已,你是否也有这样的好奇心呢?

如果你仍然好奇想知道这4种方法的执行时机的先后顺序,我也能告诉你:

1. PreApplicationStartMethodAttribute指向的方法。

2. App_Code中的appInitialize方法。

3. Application_Start。

4. HttpModule

再补充一点:在开发环境中,当我们编译网站时,PreApplicationStartMethodAttribute指向的方法可能会被调用,这处决于类库的程序集是否发生了修改。

到底该选择哪种初始化方法?

今天给大家介绍了4种在ASP.NET中执行初始化的方法,或许有些人会想:到底该选择哪种初始化方法呢?

的确,方法越多越让人迷惑。

下面的观点仅代表我个人的建议,你也可以根据自己的喜好来选择。

1. 优先选择Application_Start(虽然IIS的经典模式下需要多写点代码),因为任何人找初始化代码时都会想到那里,便于其他人维护。

2. AppInitialize方法虽然使用简单,但它并不适合于WebApplication项目。

3. PreApplicationStartMethodAttribute只支持ASP.NET 4.0以上版本,且尤其适合于类库的内部初始化。

4. 当以上方法都不可行时,HttpModule将成为最后的救命稻草,它适合所有ASP.NET版本。

 

分享:ASP.NET七大身份验证方式及解决方案
在B/S系统开发中,经常需要使用身份验证。因为web应用程序非常特殊,和传统的C/S程序不同,默认情况下(不采用任何身份验证方式和权限控制手段),当你的程序在互联网/局域网上公开后,任何人都能够访问你的web应用程序的资源,这样很难保障应用程序安全性。通俗点来说:

共6页上一页123456下一页
来源:模板无忧//所属分类:ASP教程/更新时间:2015-06-11
相关ASP教程