以编程方式查找ASP.NET工作进程和应用程序域上次启动的时间?

在ASP.NET中: 如何判断ASP.NET工作进程上次重新启动的时间? 在ASP.NET中,如何判断应用程序域上次回收的时间?     
已邀请:
对于工作进程,您可以通过编程方式从相应的perf读取Process - > Elapsed Time。 counter(1)或直接来自System.Diagnostics.Process命名空间;对于AppDomain,您可以在启动时设置应用程序级变量作为基准并手动对其进行测量。 斯科特·米切尔实际上有几个好的帖子,8年后仍然相关,不管你信不信(2)。在Cassini上运行(Vista,VS 2008),我看到了一个准确的系统正常运行时间:
TimeSpan.FromMilliseconds(Environment.TickCount)
...以及准确的Process / AppDomain正常运行时间:
foreach (Process p in Process.GetProcessesByName("WebDev.WebServer"))
{
    Response.Write(DateTime.Now.Subtract(p.StartTime).ToString() + "<br/>");
}

Response.Write(DateTime.Now.Subtract((DateTime)Application["StartTime"]).ToString());
我也能够获得正确的PerfomanceCounter,但似乎无法读取正确的值(在我的设置下始终为零):
Response.Write(new PerformanceCounter("Process", "Elapsed Time", "WebDev.WebServer").NextValue() + "<br/>");
Scott的文章绝对值得一读 - 在ProcessInfo和ProcessModelInfo(例如ProcessModelInfo.GetHistory)中有大量信息,但不幸的是它在Cassini上不可用:   流程指标仅可用   当ASP.NET进程模型是   启用。在版本上运行时   IIS 6或更新的工作进程   隔离模式,此功能不是   支持的。 更新: 很好地解释了如何正确读取计数器以避免NextValue()上的零:http://blogs.msdn.com/b/bclteam/archive/2006/06/02/618156.aspx HTH (1)https://serverfault.com/questions/90927/lifetime-of-iis-worker-process-or-appdomai (2)http://www.4guysfromrolla.com/articles/041002-1.aspx     

要回复问题请先登录注册