Ejecutar aplicación desde WebService

08/09/2004 - 10:12 por David | Informe spam
Hola! mi problema es el siguiente. Me gustaría saber si es
posible invocar un WebMethod, y que este, a su vez,
realice una llamada a una aplicación que se encuentra en
local. He probado con SHELL y de diversas formas:

Shell("C:\Aplicacion.exe", AppWinStyle.NormalFocus)
Shell("\\172.29.2.2
\Recursos\Aplicacion.exe",AppWinStyle.NormalFocus)

La cosa es que el programa se me queda en memoria, pero
nada mas. No puedo ni terminar el proceso.

¿Alguien sabe si se puede hacer esto o que estoy haciendo
mal?
Muchas gracias por anticipado.

Preguntas similare

Leer las respuestas

#1 Daniel Mazzini
08/09/2004 - 19:24 | Informe spam
David:
La clase Process te puede ayudar para ejecutar .exe, la
pregunta es ¿estas seguro de ejecutar un exe desde la web?
Puedes tener un problema de seguridad bastante grande,
como que te abran el ftp, te cambien el .exe y bueno ...
imaginate lo demas.
Saludos,
Daniel
Hola! mi problema es el siguiente. Me gustaría saber si


es
posible invocar un WebMethod, y que este, a su vez,
realice una llamada a una aplicación que se encuentra en
local. He probado con SHELL y de diversas formas:

Shell("C:\Aplicacion.exe", AppWinStyle.NormalFocus)
Shell("\\172.29.2.2
\Recursos\Aplicacion.exe",AppWinStyle.NormalFocus)

La cosa es que el programa se me queda en memoria, pero
nada mas. No puedo ni terminar el proceso.

¿Alguien sabe si se puede hacer esto o que estoy haciendo
mal?
Muchas gracias por anticipado.
.

Respuesta Responder a este mensaje
#2 David
09/09/2004 - 11:12 | Informe spam
Gracias por la respuesta. En realidad el WebService no es
para la web, sino para intranet. Realmente lo que quiero
hacer es aprovechar unos módulos de VB que tengo para
imprimir en una serie de formatos. Pasarlos a un
ejecutable que reciba los parámetros de qué registro
imprimir es sencillo. El webService sería invocado desde
unas pockets y lograría imprimir en el formato deseado.
Pero con process me sigue dando el mismo problema. El
fichero lo encuentra (ya que si pongo otra ruta salta la
excepción) y lo mete en la cola de procesos, pero ahí se
queda. No lo puedo ni eliminar siquiera.
¿Alguna idea?
Gracias

David:
La clase Process te puede ayudar para ejecutar .exe, la
pregunta es ¿estas seguro de ejecutar un exe desde la


web?
Puedes tener un problema de seguridad bastante grande,
como que te abran el ftp, te cambien el .exe y bueno ...
imaginate lo demas.
Saludos,
Daniel
Hola! mi problema es el siguiente. Me gustaría saber si


es
posible invocar un WebMethod, y que este, a su vez,
realice una llamada a una aplicación que se encuentra en
local. He probado con SHELL y de diversas formas:

Shell("C:\Aplicacion.exe", AppWinStyle.NormalFocus)
Shell("\\172.29.2.2
\Recursos\Aplicacion.exe",AppWinStyle.NormalFocus)

La cosa es que el programa se me queda en memoria, pero
nada mas. No puedo ni terminar el proceso.

¿Alguien sabe si se puede hacer esto o que estoy




haciendo
mal?
Muchas gracias por anticipado.
.



.

Respuesta Responder a este mensaje
#3 Anonimo
09/09/2004 - 12:05 | Informe spam
Quizas ya lo haz problado, pero mira de setear la
propiedad ExitTime (si es viable calcular un tiempo) o el
metodo CloseMainWindow, si tiene interfaz de usuario o
Close si no lo tiene. Tambien tenes el metodo WaitForExit
y Kill (el mas drastico)
Saludos,
Daniel
Gracias por la respuesta. En realidad el WebService no es
para la web, sino para intranet. Realmente lo que quiero
hacer es aprovechar unos módulos de VB que tengo para
imprimir en una serie de formatos. Pasarlos a un
ejecutable que reciba los parámetros de qué registro
imprimir es sencillo. El webService sería invocado desde
unas pockets y lograría imprimir en el formato deseado.
Pero con process me sigue dando el mismo problema. El
fichero lo encuentra (ya que si pongo otra ruta salta la
excepción) y lo mete en la cola de procesos, pero ahí se
queda. No lo puedo ni eliminar siquiera.
¿Alguna idea?
Gracias

David:
La clase Process te puede ayudar para ejecutar .exe, la
pregunta es ¿estas seguro de ejecutar un exe desde la


web?
Puedes tener un problema de seguridad bastante grande,
como que te abran el ftp, te cambien el .exe y bueno ...
imaginate lo demas.
Saludos,
Daniel
Hola! mi problema es el siguiente. Me gustaría saber si


es
posible invocar un WebMethod, y que este, a su vez,
realice una llamada a una aplicación que se encuentra






en
local. He probado con SHELL y de diversas formas:

Shell("C:\Aplicacion.exe", AppWinStyle.NormalFocus)
Shell("\\172.29.2.2
\Recursos\Aplicacion.exe",AppWinStyle.NormalFocus)

La cosa es que el programa se me queda en memoria, pero
nada mas. No puedo ni terminar el proceso.

¿Alguien sabe si se puede hacer esto o que estoy




haciendo
mal?
Muchas gracias por anticipado.
.



.



.

Respuesta Responder a este mensaje
#4 David
09/09/2004 - 13:50 | Informe spam
Gracias, pero el problema no es eliminar el proceso.
¿Realmente se puede ejecutar un programa desde un
WebService? El mismo código en un WindowsForm funciona sin
problema... pero en un WebForm o en el WebService no
consigo nada más que se quede en la lista de procesos...
Nunca se me había planteado esta duda (ni en ASP, ni en
JSP ni en ASP.NET), pero siempre había dado por supuesto
que se podía realizar sin problema alguno.
Un Saludo

Quizas ya lo haz problado, pero mira de setear la
propiedad ExitTime (si es viable calcular un tiempo) o el
metodo CloseMainWindow, si tiene interfaz de usuario o
Close si no lo tiene. Tambien tenes el metodo WaitForExit
y Kill (el mas drastico)
Saludos,
Daniel
Gracias por la respuesta. En realidad el WebService no




es
para la web, sino para intranet. Realmente lo que quiero
hacer es aprovechar unos módulos de VB que tengo para
imprimir en una serie de formatos. Pasarlos a un
ejecutable que reciba los parámetros de qué registro
imprimir es sencillo. El webService sería invocado desde
unas pockets y lograría imprimir en el formato deseado.
Pero con process me sigue dando el mismo problema. El
fichero lo encuentra (ya que si pongo otra ruta salta la
excepción) y lo mete en la cola de procesos, pero ahí se
queda. No lo puedo ni eliminar siquiera.
¿Alguna idea?
Gracias

David:
La clase Process te puede ayudar para ejecutar .exe, la
pregunta es ¿estas seguro de ejecutar un exe desde la


web?
Puedes tener un problema de seguridad bastante grande,
como que te abran el ftp, te cambien el .exe y






bueno ...
imaginate lo demas.
Saludos,
Daniel
Hola! mi problema es el siguiente. Me gustaría saber








si
es
posible invocar un WebMethod, y que este, a su vez,
realice una llamada a una aplicación que se encuentra






en
local. He probado con SHELL y de diversas formas:

Shell("C:\Aplicacion.exe", AppWinStyle.NormalFocus)
Shell("\\172.29.2.2
\Recursos\Aplicacion.exe",AppWinStyle.NormalFocus)

La cosa es que el programa se me queda en memoria,








pero
nada mas. No puedo ni terminar el proceso.

¿Alguien sabe si se puede hacer esto o que estoy




haciendo
mal?
Muchas gracias por anticipado.
.



.



.



.

Respuesta Responder a este mensaje
#5 CESAR DE LA TORRE [Microsoft MVP]
18/09/2004 - 22:25 | Informe spam
Probablemente sea un problema de Seguridad. El contexto de seguridad con el
que se ejecuta tu Web Service no tiene permisos para invocar un .EXE (es
lógico).
Si es un Web-Service con acceso anónimo Web permitido, solamente como prueba
rápida, prueba por ejemplo a meter el usuario anónimo (IUSR_NOMBRE_MAQUINA)
en el grupo de Administrators del servidor.
Si así te funciona, tienes que delimitar mas concretamente los permisos
necesarios y mejor pondría que tu Web requiera autenticación (autenticación
integrada p.e. si es para una Intranet, y luego desde el Web.Config habilita
'impersonation = true') para que solamente ciertos usuarios tengan permiso
para ejecutar dicho .EXE. Que lo pueda hacer un usuario anónimo sería muy
fuerte y un agujero de seguridad grande, incluso para una Intranet.

Por otro lado, la ejecucion de un .EXE directamente desde un navegador e
IIS, funcionaría como un CGI, es decir, que IIS entiende que la salida
estandard de tu .EXE es la salida estandard de HTTP e intenta devolver eso
por HTTP. Vamos, como funcionan los CGIs o ISAPIs de hace años. Ten cuidado
con eso, porque no sé exactamente como es dicho .EXE que quieres ejecutar...

En cualquier caso, lo que quieres hacer puede ser muy inestable. Te aconsejo
que el código VB que tienes lo conviertas a componentes COM VB 6.0 sin
ningún interfaz gráfico (mucho menos trabajo que pasarlo a VB .NET), los
registres después en COM (con regsvr32) o en COM+, y mediante COM-Interop,
invocas dichos objetos COM desde el Web-Service en .NET.

Si el .EXE que tienes es una App. VB 6.0 con formularios, etc. (una App.
para un solo usuario) entonces para nada es aconsejable que lo intentes
'enganchar' a un entorno distribuido escalable como los WebServices, porque
haría que tu Web-Service no escale en absoluto (en cuanto tengas decenas de
usuarios llamando al WS y este al .EXE, no escalará bien) y te de un montón
de problemas de estabilidad y rendimiento.

César de la Torre
[Microsoft MVP - .NET XML WebServices]
[MCSE] [MCT]

Renacimiento
Microsoft GOLD Certified Partner
www.renacimiento.com


"David" wrote in message
news:8c1d01c49663$41f6d280$
Gracias, pero el problema no es eliminar el proceso.
¿Realmente se puede ejecutar un programa desde un
WebService? El mismo código en un WindowsForm funciona sin
problema... pero en un WebForm o en el WebService no
consigo nada más que se quede en la lista de procesos...
Nunca se me había planteado esta duda (ni en ASP, ni en
JSP ni en ASP.NET), pero siempre había dado por supuesto
que se podía realizar sin problema alguno.
Un Saludo

Quizas ya lo haz problado, pero mira de setear la
propiedad ExitTime (si es viable calcular un tiempo) o el
metodo CloseMainWindow, si tiene interfaz de usuario o
Close si no lo tiene. Tambien tenes el metodo WaitForExit
y Kill (el mas drastico)
Saludos,
Daniel
Gracias por la respuesta. En realidad el WebService no




es
para la web, sino para intranet. Realmente lo que quiero
hacer es aprovechar unos módulos de VB que tengo para
imprimir en una serie de formatos. Pasarlos a un
ejecutable que reciba los parámetros de qué registro
imprimir es sencillo. El webService sería invocado desde
unas pockets y lograría imprimir en el formato deseado.
Pero con process me sigue dando el mismo problema. El
fichero lo encuentra (ya que si pongo otra ruta salta la
excepción) y lo mete en la cola de procesos, pero ahí se
queda. No lo puedo ni eliminar siquiera.
¿Alguna idea?
Gracias

David:
La clase Process te puede ayudar para ejecutar .exe, la
pregunta es ¿estas seguro de ejecutar un exe desde la


web?
Puedes tener un problema de seguridad bastante grande,
como que te abran el ftp, te cambien el .exe y






bueno ...
imaginate lo demas.
Saludos,
Daniel
Hola! mi problema es el siguiente. Me gustaría saber








si
es
posible invocar un WebMethod, y que este, a su vez,
realice una llamada a una aplicación que se encuentra






en
local. He probado con SHELL y de diversas formas:

Shell("C:\Aplicacion.exe", AppWinStyle.NormalFocus)
Shell("\\172.29.2.2
\Recursos\Aplicacion.exe",AppWinStyle.NormalFocus)

La cosa es que el programa se me queda en memoria,








pero
nada mas. No puedo ni terminar el proceso.

¿Alguien sabe si se puede hacer esto o que estoy




haciendo
mal?
Muchas gracias por anticipado.
.



.



.



.

Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida