¿Hay alguna manera de determinar cuánto tiempo ha estado activo un grupo de aplicaciones (en IIS7) (tiempo desde el inicio o el último reinicio) en C#?Obtener Application Uptime Uptime en C#
Respuesta
truco realmente estúpida: de alguna clase que utiliza todo, utilizar un constructor de la clase de recuerde su hora de inicio y use una página aspx para recibirla. Ahora compare con la hora actual. no existe Process.GetCurrentProcess() Hora de inicio
Process.GetCurrentProcessInfo() -
¿Por constructor de la clase quiere decir 'constructor' estático'?Debido a que el constructor estático es lo que le gustaría hacer con esto, nunca he considerado cuán fácilmente podría usar un constructor estático para lograr algo así antes. –
Sí constructor de clase en IL = constructor estático en C#. – Joshua
AppDomain se puede reciclar (cambiar web.config) sin que se recicle el grupo de aplicaciones (proceso w3wp.exe). Este constructor estático solo medirá el último reinicio de appdomain. Utilice las respuestas de información de proceso (@EricHumphrey) si realmente necesita el tiempo de inicio del proceso del grupo de aplicaciones. – yzorg
A partir de la aplicación ASP.NET, puede intentar TimeSpan uptime = (DateTime.Now - ProcessInfo.GetCurrentProcessInfo().StartTime)
Si puré de Restarting (Recycling) an Application Pool y http://forums.iis.net/t/1162615.aspx, usted debe conseguir que
DateTime.Now..
Curiosamente, esto sobrevive a un reinicio de la aplicación, por lo que no estoy seguro de cuán exacto es esto. –
si encuentra que Process.GetCurrentProcessInfo() no existe como otro usuario mencionado,
System.Diagnostics.Process.GetCurrentProcess().StartTime
puede funcionar para usted.
(que quería añadir esto como un comentario al post de Eric Humphrey, pero no se me permite)
base en lo anterior he creado una clase simple como tal ..
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); }
}
}
y llamó en Application_Start() en Global.asax.cs como
var temp = UptimeMonitor.UpTimeSeconds;
continuación, se puede acceder en cualquier lugar usando
UptimeMonitor.UpTimeSeconds
Existe uno de los dos enfoques que uso personalmente. Usar una clase estática (como se muestra en la respuesta de @ Original10) o usar las variables Application
.
He encontrado que el uso de Application
variables es aceptable porque noté que Process.GetCurrentProcess()
sobrevive al reinicio de la aplicación (por ejemplo, modificación del directorio web.config o bin). Necesitaba algo que atendiera el sitio web reiniciando y.
En su Global.asax, añada lo siguiente a
public void Application_Start(Object sender, EventArgs e)
{
...
Application["ApplicationStartTime"] = DateTime.Now.ToString("o");
}
En su código en el que lo necesita, usted podría hacer algo como:
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."
que producirá algo en la línea de
Application has been running since 2018-02-16T10:00:56.4370974+00:00 - 10,166 seconds.
No hay comprobación de la variable de aplicación o bloqueo de la aplicación si es necesario re. Dejaré esto como un ejercicio para el usuario.
- 1. Uptime en Linux en C
- 2. Oracle Uptime Query
- 3. ¿puedes falsificar * nix uptime?
- 4. Actualizando una aplicación con 100% uptime
- 5. método indefinido get_uptime para Facter :: Util :: Uptime: Module (NoMethodError)
- 6. mono C# get application ruta
- 7. WPF C# Application Performance
- 8. Trabajar con JSON en C# Winforms Application
- 9. C# application GUI y commandline
- 10. Obtener el tiempo de actividad de una caja SunOS UNIX en segundos solamente
- 11. ¿Cómo obtener el tiempo de actividad de UNIX en Java?
- 12. ¿Cómo convertir milisegundos en horas y días?
- 13. C# Application License Components and Controls
- 14. de Windows Application perfiladores - C++ Exe
- 15. C#, Metro Application, clase de excepción personalizada
- 16. Salida JSON del script Bash
- 17. Jersey JAX-RS + Spring application application sample
- 18. Android Market application Url?
- 19. Bing Application ID
- 20. Getting excel application process id
- 21. C# Ejecutar Windows Form Application desde Service (y en Vista)
- 22. ¿Cómo obtener más información sobre el evento Application Hang?
- 23. Application Publisher
- 24. Windows 8 bottom application bar
- 25. Prueba Core Data Application
- 26. Tiggr vs Application Craft
- 27. Cómo usar Microsoft Application Verifier
- 28. Inflador en Android Application Development
- 29. CRUD en DDD Application Services?
- 30. Inicio de sesión único en Spring Application
externamente, o dentro de su aplicación ASP.NET? –
Externamente. He estado jugando con Microsoft.Web.Administration.ApplicationPool, pero no veo nada en el tiempo. – JPero