Existe-t-il un moyen de déterminer la durée d'un pool d'applications (dans IIS7) (depuis le démarrage ou le dernier redémarrage) dans C#?Obtenir le temps de disponibilité du pool d'applications dans C#
Répondre
truc vraiment stupide: dans une classe que tout utilise, utilisez un constructeur de classe rappelez-vous votre heure de début et utilisez une page aspx pour le recevoir. Maintenant, comparez à l'heure actuelle.
Par constructeur de classe, voulez-vous dire constructeur 'static'?Parce que le constructeur statique est ce que vous voulez faire avec cela, je n'ai jamais considéré avec quelle facilité vous pourriez utiliser un constructeur statique pour réaliser quelque chose comme ça avant. –
Constructeur de classe Yeah dans IL = constructeur statique en C#. – Joshua
L'AppDomain peut être recyclé (change web.config) sans que le pool d'applications ne soit recyclé (processus w3wp.exe). Ce constructeur statique ne mesurera que le dernier redémarrage d'appdomain. Utilisez les réponses aux informations sur le processus (@EricHumphrey) si vous avez vraiment besoin de l'heure de début du processus du pool d'applications. – yzorg
Dans l'application ASP.NET, vous pouvez essayer TimeSpan uptime = (DateTime.Now - ProcessInfo.GetCurrentProcessInfo().StartTime)
Si vous Purée de Restarting (Recycling) an Application Pool et http://forums.iis.net/t/1162615.aspx, vous devriez obtenir
DateTime.Now -. Process.GetCurrentProcess() StartTime
Process.GetCurrentProcessInfo() n'existe pas.
Fait intéressant, cela survit à un redémarrage de l'application, donc je ne suis pas sûr de la précision de ceci. –
si vous trouvez que Process.GetCurrentProcessInfo() n'existe pas comme un autre utilisateur mentionné,
System.Diagnostics.Process.GetCurrentProcess().StartTime
peut travailler pour vous.
(je voulais ajouter ceci comme commentaire au poste de Eric Humphrey mais je ne suis pas autorisé)
Sur la base de ce qui précède, je créé une classe simple comme si ..
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); }
}
}
et appelé dans Application_Start() dans Global.asax.cs comme
var temp = UptimeMonitor.UpTimeSeconds;
il peut alors être accessible à l'aide partout
UptimeMonitor.UpTimeSeconds
Il existe une des deux approches que j'utilise personnellement. En utilisant une classe statique (comme indiqué dans la réponse @ Original10) ou en utilisant Application
variables.
J'ai trouvé que l'utilisation de variables Application
est acceptable parce que je remarquai Process.GetCurrentProcess()
survive application redémarre (par exemple modification du répertoire web.config ou bin). J'avais besoin de quelque chose qui répondrait au site Web en redémarrant ainsi que.
Dans votre Global.asax, ajoutez ce qui suit à
public void Application_Start(Object sender, EventArgs e)
{
...
Application["ApplicationStartTime"] = DateTime.Now.ToString("o");
}
Dans votre code où vous en avez besoin, vous pouvez faire quelque chose comme:
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."
qui produira quelque chose le long des lignes de
Application has been running since 2018-02-16T10:00:56.4370974+00:00 - 10,166 seconds.
Il n'y a pas de vérification de la variable d'application ou du verrouillage de l'application si besoin ré. Je vais laisser cela comme un exercice à l'utilisateur.
- 1. Disponibilité du formulaire Windows pendant le traitement
- 2. Afficher seulement le temps de fonctionnement de disponibilité [unix]
- 3. Intervalle de temps normal - Paramètres du pool d'applications
- 4. Obtenir le temps d'inactivité du Mac C ou Python
- 5. Disponibilité du modèle dans ActionFilter
- 6. Disponibilité du système dans Delphi 2009
- 7. Visual C++: Comment obtenir le temps CPU?
- 8. Obtenir le temps écoulé (Objective-c)
- 9. Obtenir le temps du message reçu
- 10. Problème dans l'implémentation du pool de threads (C# 3.0)
- 11. Modélisation de la disponibilité des ressources dans le temps avec des exceptions dans Rails
- 12. recyclez le pool de l'application asp.net dans le même pool
- 13. C#, IAsyncResult et le pool de threads
- 14. Comment obtenir le temps de fonctionnement du système au cours des dernières 24 heures
- 15. Vérification de la disponibilité du port COM en C#
- 16. C#: le calcul du temps diff
- 17. Obtenir le temps moyen entre les temps dans le SQL
- 18. Disponibilité du service de notification Push dans cette situation?
- 19. Calcul du temps par le code C++
- 20. Disponibilité des ressources en fonction du temps pour les événements dans mysql/php
- 21. Comment obtenir le temps de création du dossier (en millisecondes)?
- 22. Obtenir le temps d'inactivité du système avec Qt
- 23. Pourquoi le temps d'analyse de dojo dépend-il de la disponibilité de css et d'images?
- 24. Disponibilité du site Web API
- 25. WCF Disponibilité du contrat d'exploitation
- 26. Définition du compte d'utilisateur dans le pool d'applications IIS 6.0
- 27. Obtenir les temps de noyau en C#
- 28. Obtenez le temps du BIOS dans LINGO
- 29. Déterminer la disponibilité de C++ 0x
- 30. Problème de disponibilité
En externe ou dans votre application ASP.NET? –
Extérieurement. J'ai joué avec Microsoft.Web.Administration.ApplicationPool, mais je ne vois rien dans le temps. – JPero