【发布时间】:2011-02-14 15:44:16
【问题描述】:
如何获取当前 ASP.NET 应用程序上次启动的时间?
【问题讨论】:
如何获取当前 ASP.NET 应用程序上次启动的时间?
【问题讨论】:
如果您希望放弃一个额外的变量,我认为这将为您提供上次重新启动 IIS 工作进程(又名应用程序池)的时间:
System.Diagnostics.Process.GetCurrentProcess().StartTime
我使用它来设置可缓存性,因为该页面基于我仅在应用程序启动时动态生成的内容:
Response.Cache.SetLastModified(System.Diagnostics.Process.GetCurrentProcess().StartTime);
可以在应用程序池/工作进程中停止/启动单个网站,但我从 this post 推断,这样做不会重新创建静态应用程序对象,所以我认为与工作进程关联的日期可能是这里最有用的日期。
还要记住,在应用程序启动时创建的静态应用程序变量实际上通常会为您提供第一次访问应用程序的时间。 工作进程可能启动得更早,并且让我想起诸如“IIS 应用程序预热”和“IIS 应用程序自动启动”之类的短语以及另一个关于何时初始化静态字段的讨论。您的选择可能取决于您是否对最后一个工作进程回收时间感兴趣,或者您是否对计算其他静态成员的时间感兴趣。
【讨论】:
w3wp 进程保持不变。替代答案:stackoverflow.com/a/66409256/56621
您可以在 Global.asax 的 Application_Start 中将静态字段设置为 DateTime.Now。
【讨论】:
我猜,创建一个静态类,其中一个静态构造函数将属性分配给DateTime.Now。
【讨论】:
最简单的解决方案:
public static readonly DateTime StartupTime = DateTime.Now;
我强烈警告任何人不要使用System.Diagnostics.Process.GetCurrentProcess().StartTime
当您更新应用程序文件时,ASP.NET 应用程序会在同一进程中热重新加载。 App-Domain 正在重新加载,但w3wp 进程保持不变。请记住这一点。
【讨论】: