7

C#で(IIS7の)アプリケーションプールが稼働している時間(開始からの時間、または最後の再起動)を判断する方法はありますか?

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

アプリケーションプールの再起動(リサイクル)http://forums.iis.net/t/1162615.aspxをマッシュした場合は、それを取得する必要があります

于 2009-11-23T16:11:36.247 に答える
0

私が個人的に使用している2つのアプローチのうちの1つが存在します。静的クラスの使用(@ 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 に答える