Foros del Web » Programación para mayores de 30 ;) » .NET »

servicio web que lance una aplicacion.

Estas en el tema de servicio web que lance una aplicacion. en el foro de .NET en Foros del Web. Hola a todos, lo primero saludarles a todos. LLevo unos dias dandole vueltas a un tema, necesito ejecutar una dts de un servicio web hago: ...
  #1 (permalink)  
Antiguo 15/03/2007, 13:52
 
Fecha de Ingreso: marzo-2007
Mensajes: 8
Antigüedad: 17 años, 1 mes
Puntos: 0
Exclamación servicio web que lance una aplicacion.

Hola a todos, lo primero saludarles a todos.

LLevo unos dias dandole vueltas a un tema, necesito ejecutar una dts de un servicio web

hago:
using System;
using System.Web;
using System.Collections;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.IO;
using System.Data;
....
public class Webservices : System.Web.Services.WebService
{
public Webservices()
{

//Uncomment the following line if using designed components
//InitializeComponent();
}


[WebMethod]

public void Dtsrun()
{
System.Diagnostics.Process.Start("dtsrun");
}

para ejecutar una aplicacion.
El problema es que en modo de dearrollo, pruebas si lanza el notepad, pero cuando accedo a traves del IIS no lo hace.

¿hay alguna manera de lanzar una aplicacion desde un servicio web, la
otra opcion que se me ha ocurrido es usar

.....
mi_dts.LoadFromSQLServer
....
mi_dts.Execute();

pero esto no me funciona ni en desarrollo, no da error pero no hace nada.
  #2 (permalink)  
Antiguo 15/03/2007, 14:19
Avatar de reel  
Fecha de Ingreso: febrero-2004
Ubicación: Managua, Nicaragua
Mensajes: 496
Antigüedad: 20 años, 3 meses
Puntos: 1
Re: servicio web que lance una aplicacion.

Cita:
Iniciado por acasegra Ver Mensaje
[WebMethod]

public void Dtsrun()
{
System.Diagnostics.Process.Start("dtsrun");
}
Asegurate de estar pasando correctamente los parámetros, en el código que ha puesto en tu post no se ve ningún parámetro, me imagino que sólo lo has puesto para ejemplo.

Como no has comentado de algún error deduzco que tu problema es que estás pasando incorrectamente al dtsrun.

Saludes
__________________
Leer es Saber, REEL.
Mi Blog
  #3 (permalink)  
Antiguo 16/03/2007, 08:59
 
Fecha de Ingreso: marzo-2007
Mensajes: 8
Antigüedad: 17 años, 1 mes
Puntos: 0
Re: servicio web que lance una aplicacion.

Gracias Reel, pero no es problemas de parametros, es a modo de ejemplo, ponga lo que ponga a ejecutar solo lo hace en dearrollo, en produccion desde el IIS no hace nada, y ese es el problema
  #4 (permalink)  
Antiguo 16/03/2007, 09:13
Avatar de reel  
Fecha de Ingreso: febrero-2004
Ubicación: Managua, Nicaragua
Mensajes: 496
Antigüedad: 20 años, 3 meses
Puntos: 1
Re: servicio web que lance una aplicacion.

Entonces es muy probable que el usuario con que se esta ejecutando tu Código no tenga permiso para ejecutar el dtsrun.

Si estas usando el parámetro /E en el dtsrun también tienes que verificar que esa cuenta con la cual se ejecuta tu código del webservice tenga permiso para conectarse al SQL server.

Saludes
__________________
Leer es Saber, REEL.
Mi Blog
  #5 (permalink)  
Antiguo 16/03/2007, 11:37
 
Fecha de Ingreso: marzo-2007
Mensajes: 8
Antigüedad: 17 años, 1 mes
Puntos: 0
Re: servicio web que lance una aplicacion.

Para probar he cambiado el DTSRUN por NOTEPAD.
en el servidor web en las propiedades del servicio, tengo:

>Directorio:
en permisos de ejecucion: Sec.comandos y ejecutables
>Seguridad de directorios:
>Autenticacion y control de acceso:
Usar la siguiente cuenta de ususario para el acceso anonimo:
usuario: (administrador del dominio, y su password)
  #6 (permalink)  
Antiguo 16/03/2007, 13:13
Avatar de reel  
Fecha de Ingreso: febrero-2004
Ubicación: Managua, Nicaragua
Mensajes: 496
Antigüedad: 20 años, 3 meses
Puntos: 1
Re: servicio web que lance una aplicacion.

Aun cuando ha configurado al IIS para que las cuentas anónimas se personifiquen como administrador del domino no significa que el código también se ejecuten con esa cuenta por lo general .NET esta configurado para usar otra cuenta al momento de la ejecución. Todo depende de la configuración.

Si estas desarrollando con XP busca en la administrador tarea con que cuenta esta corriendo el proceso aspnet_wp.exe, por lo general es con la cuenta local de la PC llamada ASPNET.

Saludes,
__________________
Leer es Saber, REEL.
Mi Blog
  #7 (permalink)  
Antiguo 16/03/2007, 13:20
 
Fecha de Ingreso: marzo-2007
Mensajes: 8
Antigüedad: 17 años, 1 mes
Puntos: 0
Re: servicio web que lance una aplicacion.

me he dado cuenta que en el administrador de tareas habian procesos notepad.exe con la cuneta de servicios de red.

ya he consoeguido algo mas añadiendo al codigo:

System.Security.SecureString pass = new .
System.Security.SecureString();
pass.AppendChar ('p');
pass.AppendChar ('a');
pass.AppendChar ('s');
pass.AppendChar ('s');
pass.AppendChar ('w');
pass.AppendChar ('o');
pass.AppendChar ('r');
pass.AppendChar ('d');
Process.Start("notepad.exe","usuario",pass,"domini o_esmprea");
(siendo usuario el usuario de la sesion actual en el servidor)

y ya abre una ventana de error que titulada "notepad.exe- error de aplicacion"
y dice " la aplicacion no se ha podido inicalizar correctamente (0xc0000142). Haga clic en aceptar para terminar la aplicacion.
  #8 (permalink)  
Antiguo 20/03/2007, 03:35
 
Fecha de Ingreso: marzo-2007
Mensajes: 8
Antigüedad: 17 años, 1 mes
Puntos: 0
Re: servicio web que lance una aplicacion.

Cita:
Iniciado por reel Ver Mensaje

Si estas desarrollando con XP busca en la administrador tarea con que cuenta esta corriendo el proceso aspnet_wp.exe, por lo general es con la cuenta local de la PC llamada ASPNET.

Saludes,
estoy desarroyando directamente en 2003 ya que así no me llevo sorpresas posteriores, pero no veo ese proceso que comentas
  #9 (permalink)  
Antiguo 20/03/2007, 08:26
 
Fecha de Ingreso: marzo-2007
Mensajes: 8
Antigüedad: 17 años, 1 mes
Puntos: 0
De acuerdo Re: servicio web que lance una aplicacion.

Ya lo consegui,
Ha sido engorroso pero al final funciona bien.
Os comento la receta.
Ingedientes.

-1 usuario con licencia para ejecutar "xp_cmdshell"
-1 funcion en el servidor sql:
create FUNCTION [dbo].[fn_Dts] (@Param1 char(300) )
RETURNS int
AS
BEGIN
declare @cadena char(99)
set @cadena = 'dtsrun ' + @Param1
exec master.dbo.xp_cmdshell @cadena
RETURN 1
END
-1 TABLA con almenos 1 registro
-1 UN SERVICIO WEB:

[WebMethod]
public string Dtsrun2_Funcion (string servidor, string Dts)
{
SqlConnection Conexion = new SqlConnection();
Conexion.ConnectionString = "data source='" + servidor + "';initial catalog=BASEDEDATOS;user id=USUARIO1;pwd=;";
SqlConnection conn = null;
SqlCommand cmd = null;
try
{
conn = new SqlConnection (Conexion.ConnectionString);
conn.Open();
cmd = conn.CreateCommand();
cmd.CommandText = "select top 1 dbo.fn_Dts(@parametro) from tabla";
cmd.Parameters.Add("@parametro", SqlDbType.NVarChar, 300);
cmd.Parameters["@parametro"].Value = Dts;
int result = (int)cmd.ExecuteScalar();
return result.ToString ();
}
catch (Exception esp)
{
return esp.Message ;
}
Basta ejecutar el servicio web con los parametros:

Servidor, @"/NMIDTS
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 15:00.