15

我有global.asaxwhich 从我创建的自定义类扩展而来,称为MvcApplicationwhich extends from System.Web.HttpApplication

在它的构造函数中,它按如下方式记录应用程序启动:

protected MvcApplicationGeneral()
{
    _log.Info("logApplicationStartToTextFile");
}

当我去查看日志文件时,这似乎被调用了很多次,而不仅仅是每个应用程序启动一次。我放置了另一个日志条目Application_Start,似乎只调用了一次。类是Global.asax根据请求实例化的,还是比每个应用程序只实例化一次更频繁?

4

1 回答 1

39

HttpAppliction 对象的多个实例被创建并汇集以处理请求。在 asp.net 应用程序的生命周期中。是的 Application_Start 只会被调用一次。

参考http://www.codeproject.com/Articles/73728/ASP-NET-Application-and-Page-Life-Cycle

摘录:一旦创建了所有核心 ASP.NET 对象,就会创建“HttpApplication”对象来服务请求。如果您的系统中有一个“global.asax”文件,那么将创建“global.asax”文件的对象。请注意 global.asax 文件继承自 'HttpApplication' 类。注意:第一次将 ASP.NET 页面附加到应用程序时,会创建一个新的 'HttpApplication' 实例。为了最大限度地提高性能,HttpApplication 实例可以重复用于多个请求。

在此处输入图像描述

于 2013-10-24T17:19:43.243 回答