Foros del Web » Programando para Internet » ASPX (.net) »

Ejecutar un servicio de windows desde asp.net

Estas en el tema de Ejecutar un servicio de windows desde asp.net en el foro de ASPX (.net) en Foros del Web. Hola, he estado probando como poder hacer correr o iniciar un servicio instalado en windows desde asp.net, pero no he logrado nada. he probado ejecutar ...
  #1 (permalink)  
Antiguo 16/03/2007, 15:31
 
Fecha de Ingreso: abril-2006
Mensajes: 21
Antigüedad: 18 años, 1 mes
Puntos: 0
Ejecutar un servicio de windows desde asp.net

Hola, he estado probando como poder hacer correr o iniciar un servicio instalado en windows desde asp.net, pero no he logrado nada.
he probado ejecutar un arachivo bat a traves de la instruccion Shell desde asp.net pero no pasa nada, ni siquiera me tira error.

Dim iPid As Integer
Try
'System.Diagnostics.Process.Start("C:\file.bat")
iPid = Shell("C:\Inetpub\wwwroot\MataServicios\bin\file.b at", AppWinStyle.NormalFocus, True, -1)
iPid = iPid
Catch ex As Exception
Dim s As String
s = ex.Message.ToString
End Try

Puedo ejecutar un servicio de windows desde asp.net, por que quiero administralo desde la una pagina aspx. iniciarlo detenerlo.

desde ya gracias.
  #2 (permalink)  
Antiguo 16/03/2007, 22:45
Avatar de HiTek  
Fecha de Ingreso: noviembre-2003
Ubicación: LF, Santiago.Chile
Mensajes: 217
Antigüedad: 20 años, 5 meses
Puntos: 0
Re: Ejecutar un servicio de windows desde asp.net

Que tal marcelo...lo que tu necesitas ya lo he hecho por asuntos practicos

te comento la solución

servidor remoto:
1- aplicacion o servicio que deseas ejecutar
2- web page que administrará la aplicación
3- servicio simple de lectura de archivos de texto

-----------
1- es la aplicacion, en tu caso servicio que desees ejecutar
2- web page
esta pagina lo que debe hacer es listar los procesos que el servidor está ejecutando, recorres uno a uno y si el servicio que necesitas no está en la lista hay que hacer algo para que se ejecute...en mi caso un boton que hace un submit y corre un par de instrucciones genera un archivo de texto con el nombre de la aplicación que deseo ejecutar (previamente almacenado en el web config)...listo! (bueno pero no se ha ejecutado la app....eh si...tienes razon)
3- tenemos un sencillo pero eficiente servicio o miniapp que lee un directorio en donde se escribe el archivo de texto que previamente generamos al hacer click en el boton de la lista de procesos, si este servcio encuentra un archivo txt en el directorio indicado deberá abrir el archivo, tomar la linea que contiene el nombre de la aplicacion y luego ejecutarla y listo! problema resuelto...ya no tendrás que ir a la oficina a las 4 de la madrugada porque el servicio que necesitabas se cayo en forma repentina.

por ultimo....porque este metodo y no la ejecucion directa al presionar el boton....

si tenemos un servicio en el server y lo ejecutamos o iniciamos este será ejecutado por el usuario 'administrador' del servidor y por lo tanto tendrá acceso al FS y todas las caracteristicas y utilidades que esto conlleva ejecutandose y realizando las tareas programadas correctamente...por el contrario....

si lo ejecutamos dandole click al boton de la web page...el servicio se iniciará bajo los permisos del usuario que lo solicito...en este caso el usuario sería el 'IUSR_NOMBRESERVER' o el 'IWAM_NOMBRESERVER' que son usuarios del sistema con permisos muy restringidos y el servicio no va a funcionar como realmente debe...

por eso es necesario....
el servicio a ejecutar
la web page y
el servicio lanzador de aplicaciones...


espero te haya quedado claro, saludos
  #3 (permalink)  
Antiguo 19/03/2007, 07:16
 
Fecha de Ingreso: abril-2006
Mensajes: 21
Antigüedad: 18 años, 1 mes
Puntos: 0
Re: Ejecutar un servicio de windows desde asp.net

Hola, Gracias por responder...

en mi caso un boton que hace un submit y corre un par de instrucciones genera un archivo de texto con el nombre de la aplicación que deseo ejecutar (previamente almacenado en el web config)...listo! (bueno pero no se ha ejecutado la app....eh si...tienes razon)

Ahy tengo dudas con lo de (previamente almacenado en el web config)...

3- tenemos un sencillo pero eficiente servicio o miniapp que lee un directorio en donde se escribe el archivo de texto que previamente generamos al hacer click en el boton de la lista de procesos, si este servcio encuentra un archivo txt en el directorio indicado deberá abrir el archivo.

En este punto como sabremos si el servicio que ha de leer el archivo esta corriendo, por que el sistema operativo puede matar ese proceso ????

Gracias
  #4 (permalink)  
Antiguo 19/03/2007, 14:30
Avatar de HiTek  
Fecha de Ingreso: noviembre-2003
Ubicación: LF, Santiago.Chile
Mensajes: 217
Antigüedad: 20 años, 5 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
  #5 (permalink)  
Antiguo 19/03/2007, 16:12
 
Fecha de Ingreso: abril-2006
Mensajes: 21
Antigüedad: 18 años, 1 mes
Puntos: 0
Re: Ejecutar un servicio de windows desde asp.net

Hola, gracias por responder ese c:\servicio.exe se ejecutara cada ves que presionen un botonsillo y no se encuentre el servicio corriendo.

que pasa con el tema de los permisos, se ejecutara correctamente c:\servicio.exe ???

tambien he estado probando con servicecontroller pero no me funciona me dice
Detalles de la excepción: System.ComponentModel.Win32Exception: Acceso denegado

[Win32Exception (0x80004005): Acceso denegado]

[InvalidOperationException: No se puede abrir el servicio DEMPAQUE en el equipo 'SINNIUNO'.]
System.ServiceProcess.ServiceController.GetService Handle(Int32 desiredAccess)
System.ServiceProcess.ServiceController.Stop()
y el codigo es el sgte

Try
Dim servicio As New ServiceProcess.ServiceController
servicio.MachineName = "SINNIUNO"
servicio.ServiceName = "DEMONIO"
Me.Button4.Text = GetServiceStatus(servicio)
If servicio.CanStop Then
servicio.Stop()
Else
End If
Catch ex As ServiceProcess.TimeoutException
End Try


voy a probar eso del web.config y de ahy te posteo como me fue
desde ya gracias.
  #6 (permalink)  
Antiguo 19/03/2007, 16:18
Avatar de HiTek  
Fecha de Ingreso: noviembre-2003
Ubicación: LF, Santiago.Chile
Mensajes: 217
Antigüedad: 20 años, 5 meses
Puntos: 0
Re: Ejecutar un servicio de windows desde asp.net

Se va a ejecutar correctamente porque desde la máquina local se va a ejecutar con permisos de administrador, si lo ejecuta cualquier otro usuario de la máquina vas a tener problemas y las restricciones se las agregas tu ...si es necesario que se ejecute cada vez que presiones el botón o si se debe ejecutar sólo si no existe dentro de los procesos que corren actualmente...

salu2
  #7 (permalink)  
Antiguo 20/03/2007, 07:59
 
Fecha de Ingreso: abril-2006
Mensajes: 21
Antigüedad: 18 años, 1 mes
Puntos: 0
Re: Ejecutar un servicio de windows desde asp.net

Hola, tengo un pequeño problema no se ejecuta el servicio en windows 2003 server, lo probe en xp professional y funciona pero al momento de probarlo en el 2003 server no se ejecuta el servicio, bueno en realidad se ven en los procesos corriendo la aplicacion que debiera lanzar el servicio de windows pero no se inicia el servicio. aparece como nombre de usuario servicio de red

que debo hacer para que funcione.......

Gracias
  #8 (permalink)  
Antiguo 25/01/2009, 07:54
 
Fecha de Ingreso: enero-2009
Mensajes: 1
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: Ejecutar un servicio de windows desde asp.net

Buenos Días. estoy intentando iniciar un proceso desde una pagina web en mi PC local donde tengo posteada la página. el inicio lo hago de la siguiente manera:

System.Diagnostics.Process.Start(ConfigurationMana ger.AppSettings["servicio"].ToString());

web.config:
<appSettings>
<add key="servicio" value="c:\\famil.exe"/>
</appSettings>

el problema esta que dicho proceso me lo ejecuta con el usuario aspnet. por ende cuando quiero hacer el kill de dicho proceso me da error de autorizacion:

Detalles de la excepción: System.ComponentModel.Win32Exception: Acceso denegado

Línea 47: {
Línea 48: //si la app se está ejecutando
Línea 49: pc.Kill();

estube leyendo, configuré el web.config unas lineas con un usuario y la pass del usuario local para que utilice eso a para terminar el proceso pero no hay caso, el error sigue.

<identity impersonate="true" userName="username" password="password" />

tambien lei algo de modificar el machine.config pero al querer hacerlo me dio varios error.

a alguno se le ocurre como solucionarlo?

Muchas Gracias.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:34.