Y a-t-il une façon de déterminer combien de temps un pool d'applications (dans IIS 7) a été augmenté (temps depuis le début, ou le dernier redémarrage) en C #? P>
7 Réponses :
de l'application ASP.NET, vous pouvez essayer tispan uptime = (datetime.now - processinfo.getcurrentProcessinfo () .starttime) code> p> p>
Si vous avez écrasé redémarrage (recyclage) Un pool d'applications et http://forum.iis.net/t/1162615.aspx , vous devriez l'obtenir p>
Trick vraiment stupide: dans une classe que tout utilise, utilisez un constructeur de classe pour vous souvenir de votre temps de démarrage et utilisez une page ASPX pour la recevoir. Maintenant comparer à l'heure actuelle. P>
Par constructeur de classe, vous voulez dire constructeur statique code>? Étant donné que le constructeur statique est ce que vous voudriez faire avec cela, je n'ai jamais envisagé la facilité avec laquelle vous pourriez utiliser un constructeur statique pour atteindre quelque chose comme ça avant.
Ouais constructeur de classe en IL = constructeur statique en C #.
L'AppDomain peut être recyclé (Modifier Web.config) sans le pool d'applications recyclé (processus W3WP.EXE). Ce constructeur statique ne mesurera que le dernier redémarrage de l'Appdomain. Utilisez les réponses d'informations sur le processus (@erichumphrey) si vous avez vraiment besoin du temps de début du processus de piscine des applications.
C'est vrai, mais j'ai trouvé quand poser cette question, l'AppDomain est presque toujours ce que vous voulez.
DateTime.Now - Process.GetCurrentProcess().StartTime Process.GetCurrentProcessInfo() doesn't exist.
Fait intéressant, cela survit à redémarrer une demande, donc je ne suis pas sûr de la précision de cela.
Cela obtient l'heure de début du processus W3WP (service IIS) et non le pool de candidatures.
Si vous trouvez que processus.getCurrentProcessInfo () n'existe pas comme un autre utilisateur mentionné,
System.Diagnostics.Process.GetCurrentProcess().StartTime
Basé sur ce qui précède, j'ai créé une classe simple comme .. et l'appelé dans application_start () dans global.aSax.cs comme p> UptimeMonitor.UpTimeSeconds
Une des deux approches existe que j'utilise personnellement. Utilisation d'une classe statique (comme indiqué dans la réponse de @ Original10) ou en utilisant J'ai constaté que l'utilisation de code> variables code> est acceptable car j'ai remarqué dans votre global.aSax, ajoutez ce qui suit à p> application code> variables.
processus .GetCurrentCrocess () code> survit des redémarrages de l'application (par exemple, la modification du répertoire web.config ou bin). J'avais besoin de quelque chose qui accompagnerait le site Web redémarrer aussi em>. P>
Application has been running since 2018-02-16T10:00:56.4370974+00:00 - 10,166 seconds.
Externe, ou dans votre application ASP.NET?
À l'extérieur. J'ai joué avec le Microsoft.Web.Administration.ApplicationPool, mais je ne vois rien aussi loin que le temps.