7

有没有一种方法可以确定应用程序池(在 IIS7 中)已经在 c# 中运行了多长时间(自启动以来的时间,或上次重新启动的时间)?

4

7 回答 7

9
DateTime.Now - Process.GetCurrentProcess().StartTime

Process.GetCurrentProcessInfo()不存在。

于 2010-09-09T22:40:48.187 回答
5

真正愚蠢的技巧:在所有东西都使用的某个类中,使用类构造函数来记住您的开始时间并使用 aspx 页面来接收它。现在与当前时间进行比较。

于 2009-11-23T16:21:46.180 回答
3

从 ASP.NET 应用程序中,您可以尝试TimeSpan uptime = (DateTime.Now - ProcessInfo.GetCurrentProcessInfo ().StartTime)

于 2009-11-23T16:07:29.030 回答
3

基于以上,我创建了一个像这样的简单类..

public static class UptimeMonitor
{
    static DateTime StartTime { get; set; }

    static UptimeMonitor()
    {
        StartTime = DateTime.Now;
    }

    public static int UpTimeSeconds
    {
        get { return (int)Math.Round((DateTime.Now - StartTime).TotalSeconds,0); }
    }
}

并在 Global.asax.cs 中的 Application_Start() 中调用它

var temp = UptimeMonitor.UpTimeSeconds;

然后可以在任何地方使用

UptimeMonitor.UpTimeSeconds
于 2016-05-25T10:04:54.883 回答
2

如果您发现另一个用户提到的 Process.GetCurrentProcessInfo() 不存在,

System.Diagnostics.Process.GetCurrentProcess().StartTime

可能对你有用。

(我想将此作为评论添加到 Eric Humphrey 的帖子中,但我不被允许)

于 2014-11-20T19:17:51.793 回答
0

如果你捣碎了 Restarting (Recycling) an Application Poolhttp://forums.iis.net/t/1162615.aspx,你应该得到它

于 2009-11-23T16:11:36.247 回答
0

我个人使用的两种方法之一。使用静态类(如@Original10 的答案所示)或使用Application变量。

我发现使用Application变量是可以接受的,因为我注意到Process.GetCurrentProcess()应用程序重新启动后仍然存在(例如修改 web.config 或 bin 目录)。我需要一些能够满足网站重启的东西

在您的 Global.asax 中,将以下内容添加到

public void Application_Start(Object sender, EventArgs e)
{
  ...
  Application["ApplicationStartTime"] = DateTime.Now.ToString("o");
}

在您需要它的代码中,您可以执行以下操作:

var appStartTime = DateTime.MinValue;
var appStartTimeValue = Web.HttpCurrent.Application["ApplicationStartTime"].ToString();

DateTime.TryParseExact(appStartTimeValue, "o", null, Globalization.DateTimeStyles.None, Out appStartTime);
var uptime = (DateTime.Now - appStartTime).TotalSeconds

var lsOutput = $"Application has been running since {appStartTime:o} - {uptime:n0} seconds."

这将产生类似的东西

Application has been running since 2018-02-16T10:00:56.4370974+00:00 - 10,166 seconds.

如果需要,不检查应用程序变量或锁定应用程序。我将把它作为练习留给用户。

于 2018-02-16T16:32:34.867 回答