【发布时间】:2015-05-29 07:43:40
【问题描述】:
我有一个还集成了 Web API 的 Web 应用程序。就在今天,我惊讶地发现 Web API 上的第一个 REST 请求重新触发了Application_Start 的执行(尽管它在启动网页时已经运行)。在阅读了ASP.NET HttpApplication lifecycle 和ASP.NET Application Life Cycle Overview 之后,REST 请求似乎正在产生一个新的HttpApplication。
此外,在 MSDN 上它说:
第一次在应用程序中请求 ASP.NET 页面或进程时,会创建 HttpApplication 类的新实例。但是,为了最大限度地提高性能,HttpApplication 实例可能会被重复用于多个请求。
在我看来,每个请求都可能产生一个新的HttpApplication,因此Application_Start 必须以可重入或幂等的方式编写。这个结论对吗?
在我的具体情况下,我在 Application_Start 中初始化一个日志写入器,第二次失败,因为该文件已被使用。我想在应用程序池回收的情况下,这不是问题,因为资源在两者之间被释放。
【问题讨论】:
标签: asp.net asp.net-mvc asp.net-web-api