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

[SOLUCIONADO] Parametros por referencia el servicio web

Estas en el tema de Parametros por referencia el servicio web en el foro de .NET en Foros del Web. Buen día colegas, espero me apoyen en algunas dudas.... Tengo un servicio web con la siiguiente funcion: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código ASP: Ver original [ WebMethod ...
  #1 (permalink)  
Antiguo 23/11/2015, 12:58
 
Fecha de Ingreso: enero-2013
Mensajes: 176
Antigüedad: 11 años, 3 meses
Puntos: 2
Pregunta Parametros por referencia el servicio web

Buen día colegas, espero me apoyen en algunas dudas....

Tengo un servicio web con la siiguiente funcion:

Código ASP:
Ver original
  1. [WebMethod]
  2.         public MyError procesa(string pass, XmlDocument doc,List<MyObject> clientes, List<MyClient> noProcesados)
  3.         {
  4.              Error error = new Error();
  5.              noProcesados = new List<MyClient>();
  6.              if (pass == System.Configuration.ConfigurationManager.AppSettings["password"])
  7.              {
  8.                    ...
  9.              }
  10.              return error;
  11.         }

Como ven regreso un objeto tipo "Error" pero el paramétro "noProcesados" me interesa, ya que en el metodo si hay algun error no proceso esa información solo el resto y requiero saber cuales se procesaron y cuales no...

Intente usando "ref" y "out" pero al suponer que son arreglos se pasa la dirección fisica... en fin me marca error y no he podido resolverlo..

Alguien sabe como pasar un List<MyObject> a un servicio web, recuperando sus valores modificados dentro de este servicio web... por parámetros??
__________________
Define tus intereses, se curioso, investiga, comete errores, aprende, practica, mejora, enseña y vuelve a comenzar....
  #2 (permalink)  
Antiguo 23/11/2015, 13:25
(Desactivado)
 
Fecha de Ingreso: enero-2015
Mensajes: 393
Antigüedad: 9 años, 3 meses
Puntos: 52
Respuesta: Parametros por referencia el servicio web

No se puede hacer lo que estás planteando.

Los servicios web como el que estás escribiendo funcionan mediante el protocolo SOAP, es decir, serializan y deserializan las respuestas y parámetros de entrada.

En lugar de devolver MyError, deberias devolver un objeto que contenga una respuesta adecuada que incluya todos los datos que queres incluir.

Por cierto, por amor a todo lo que es bueno y bello en este mundo, NO (repito, NOOOOO!!!!!) hagas que tu servicio reciba un objeto de tipo XmlDocument, que luego el pobre infeliz que tenga que utilizar tu servicio desde afuera tenga que construir a mano. Esto ya me ha pasado y es una tortura realmente, y dan ganas de encontrar al que escribió el web service y darle una patada (puntapié) en los dientes.

En lugar de eso, creá un modelo de objetos fuertemente tipado (o sea clases de C#) que representen todos los datos que tu servicio maneja, y exponé ese modelo de forma apropiada (es decir, que tu WebMethod reciba un objeto de tipo "Producto" (por ejemplo), en lugar de XmlDocument con la información de un producto).
  #3 (permalink)  
Antiguo 23/11/2015, 13:31
 
Fecha de Ingreso: enero-2013
Mensajes: 176
Antigüedad: 11 años, 3 meses
Puntos: 2
Respuesta: Parametros por referencia el servicio web

Gracias por la respuesta Mmmmm muy bien trataré de englobar todos mis resultados en un objeto para regresarlo....

jaja respecto al XMLDocument no te preocupes, yo recibo el XML encriptado y este al llegar a mi funcion los deserealizo (lo convierto a un objeto que traigo de un modelo de datos)...

el cliente del servicio web ya tiene los requerimientos necesarios junto con su documentación y serializa el objeto una vez creado y lo encripta...

y ante todo pienso que la siguiente persona que retomar o utilizará mi código sera un psicopata que sabe mi dirección...

Saludos! y gracias por la respuesta
__________________
Define tus intereses, se curioso, investiga, comete errores, aprende, practica, mejora, enseña y vuelve a comenzar....

Etiquetas: parametros, referencia, servicio
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 16:37.