7
votes

Obtenir la disponibilité du pool d'applications en C #

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 #?


2 commentaires

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.


7 Réponses :


3
votes

de l'application ASP.NET, vous pouvez essayer tispan uptime = (datetime.now - processinfo.getcurrentProcessinfo () .starttime)


0 commentaires

0
votes

0 commentaires

5
votes

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.


4 commentaires

Par constructeur de classe, vous voulez dire constructeur statique ? É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.



9
votes
DateTime.Now - Process.GetCurrentProcess().StartTime
Process.GetCurrentProcessInfo() doesn't exist.

2 commentaires

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.



2
votes

Si vous trouvez que processus.getCurrentProcessInfo () n'existe pas comme un autre utilisateur mentionné,

System.Diagnostics.Process.GetCurrentProcess().StartTime


0 commentaires

3
votes

Basé sur ce qui précède, j'ai créé une classe simple comme .. xxx pré>

et l'appelé dans application_start () dans global.aSax.cs comme p>

UptimeMonitor.UpTimeSeconds


0 commentaires

0
votes

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 application code> variables.

J'ai constaté que l'utilisation de code> variables code> est acceptable car j'ai remarqué 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>

dans votre global.aSax, ajoutez ce qui suit à p>

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


0 commentaires