80

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

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

  • 为什么我要使用其中一个?
  • 它真的有区别吗?
  • 两个事件之间的应用程序状态有何变化?

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

4

2 回答 2

90

MSDN 文档

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

在里面:

在创建所有模块后,为 HttpApplication 类的每个实例调用一次。

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

于 2009-04-06T11:28:47.727 回答
12

是的

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

于 2009-06-02T07:13:35.187 回答