何时在Global.asax中使用Application_Start vs Init?

时间:2009-04-06 10:59:05

标签: asp.net global-asax

我想知道在什么情况下我应该将Application_Start() vs Init()中的应用初始化代码放在我的Global.asax文件中?

两者之间的区别对我来说似乎并不明显,除了Application_start首先被调用,然后是Init()

  • 为什么我会使用一个而不是另一个?
  • 这真的有所作为吗?
  • 应用程序状态有哪些变化 两个事件之间?

到目前为止,我能找到的唯一真实指针是IHttpModule只有Init()方法,所以如果我正在做的事情在某些时候可能更适合实现IHttpModule我应该使用Init()的{​​{1}}方法,如果没有其他一致性的话。

2 个答案:

答案 0 :(得分:83)

来自MSDN docs

  

Application_Start和Application_End方法是不代表HttpApplication事件的特殊方法。 ASP.NET 在应用程序域的生命周期内调用它们一次,而不是为每个HttpApplication实例调用

初​​始化:

  

为每个实例调用一次   毕竟HttpApplication 类   模块已经创建。

更新:如果您需要确保在应用中只调用一次某个代码。生命周期,Application_Start是一个更好的解决方案。示例:配置log4net?

答案 1 :(得分:11)

它们之间存在差异。只有一次调用Application_Start()事件,而每次创建应用程序实例时都会调用Init()方法。