Ver Mensaje Individual
  #4 (permalink)  
Antiguo 19/03/2007, 14:30
Avatar de HiTek
HiTek
 
Fecha de Ingreso: noviembre-2003
Ubicación: LF, Santiago.Chile
Mensajes: 217
Antigüedad: 20 años, 6 meses
Puntos: 0
Re: Ejecutar un servicio de windows desde asp.net

web.config
Código:
<appSettings>
<add key="servicio" value="c:\miServicio.exe"
</appsettings>
Con el ensamblado System.Diagnostic puedes recorrer el listado de procesos que se ejecutan en la máquina local, para cada proceso te entrega el id, nombre, estado, nº de hilos, etc...

si el servicio que deseas ejecutar está dentro del listado de procesos no debes iniciar una nueva instancia sería redundante y podrías poner en peligro la ejecución de tu servicio...

si el servicio no está entre los procesos lo ejecutamos...y qué cosa vamos a ejecutar...el servicio que tenemos grabado en el web.config con ruta y todo (porqué en el web.config y no en duro?...la respuesta es obvia, si cambias el servicio de lugar tu app ya no sirve)

El SO no puede matar el proceso por si sólo...no hay un tema de autogestión... no es autónomo (en este caso)... pero tu app o servicio si podría lanzar una excepción y autoeliminarse...

salu2

------
recorrer procesos del equipo local en ejecución
Código:
System.Diagnostics.Process[] myProcesses = System.Diagnostics.Process.GetProcesses();
for (int i = 0; i < myProcesses.Length; i++)
{
    string processName = myProcesses[i].ProcessName;
    if ( processName.IndexOf("NombreDeTuApp") >= 0 )
        //la app si está ejecutandose
    else
{
        //ejecutamos el servicio
        System.Diagnostics.Process.Start(ConfigurationManager.AppSettings["servicio"].ToString());
        break;
    }
}

Última edición por HiTek; 19/03/2007 a las 14:37