在ASP.NET中:
如何判断上次重启ASP.NET工作进程的时间?
在ASP.NET中,如何确定应用程序域上次回收的时间?
答案 0 :(得分:3)
对于工作进程,您可以通过编程方式阅读进程 - >经过时间来自相应的perf。 counter(1)或直接来自 System.Diagnostics.Process 命名空间;对于 AppDomain ,您可以在启动时设置应用程序级变量作为基准并手动对其进行衡量。
实际上,Scott Mitchell在这方面有几个好的帖子,8年后仍然相关,信不信由你(2)。在Cassini上运行(Vista,VS 2008),我看到了准确的系统正常运行时间:TimeSpan.FromMilliseconds(Environment.TickCount)
...准确的进程/ 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 )中有大量信息,但是不幸的是,它不适用于卡西尼号:
流程指标仅供参考 当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