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