Necesito pasar un objeto personalizado a un servicio web remoto. He leído que puede ser necesario implementar ISerializable, pero lo hice y tengo dificultades. ¿Cuál es la forma correcta en C# para pasar un objeto personalizado a un método de servicio web?C# .NET Web Services: paso de objetos personalizados a un servicio web
Respuesta
Los objetos suministrados por el usuario como argumentos, como parte de la solicitud de servicio debe estar marcado con [Serializable] y sobre la base de algunas de las respuestas publicadas antes que el mío, también debes asegurarte de que tu objeto personalizado no contenga ningún parámetro en el constructor.
También tenga en cuenta que cualquier lógica que tenga dentro de su clase no se creará en la clase proxy que se crea en el lado del cliente. Todo lo que verá en el lado del cliente es un constructor y propiedades predeterminados. Por lo tanto, si agrega métodos a sus objetos personalizados, tenga en cuenta que el cliente no los verá ni podrá usarlos.
Lo mismo ocurre con cualquier lógica que pueda poner en cualquiera de las propiedades.
Ejemplo
[Serializable]
public class Customer
{
public int Id { get; set; }
public string Name { get; set; }
}
Jim, lo siento, pero [Serializable] no tiene nada que ver con los servicios web. –
@John: ¿Por qué no?¿El XmlSerializer tampoco se basa en el atributo [Serializable]? – fretje
Ejemplo agregado. Uso el atributo [Serializable] todo el tiempo cuando necesito serializar un objeto personalizado. –
Editar: elimina la parte de [Serializable]
¿Va a crear el servicio, o consumirlo?
Para crear un objeto que se puede pasar como un parámetro de un método web, no tiene que hacer nada especial. Eso es si estás creando un servicio web de asmx.
OTOH, Si está creando un servicio WCF, debe marcar la clase con [DataContract] y todos los miembros que desea serializar con [DataMember].
Si está consumiendo el servicio web, las clases proxy para el objeto que pasa deben generarse cuando agrega la referencia de servicio. Solo tienes que usarlos.
En realidad, estoy haciendo y consumiendo. Lo que has mencionado aquí es lo que he estado haciendo, pero sigo recibiendo quejas de VS sobre la necesidad de un constructor sin parámetros en el objeto personalizado (que he agregado, pero fue en vano). –
puede entonces proporcionar el código relevante y las quejas * exactas * ;-) – fretje
Parece que un duplicado de esta question
De todos modos, todos los objetos implicados en las interacciones WS deben ser XML serializable, no ISerializable (que es la serialización binaria). Además, deben describirse en el contrato de servicio (WSDL), de lo contrario, los clientes no podrán consumirlos. This article debería ser útil para comprender la serialización XML con XML Web Services.
Sin embargo, si habla de objetos realmente personalizados (es decir, cualquier tipo). Debería considerar pasarlos en forma binaria: ya sea como codificación base64 o como archivos adjuntos. La pregunta a la que me he vinculado tiene una respuesta sobre cómo hacer eso.
Mira esta question para ver cómo implementar la serialización XML para su encargo objetos
- 1. C# web services
- 2. .NET Web Services sin ASP.NET/IIS?
- 3. Encriptación en C# Web-Services
- 4. Tutoriales de servicio web RESTful para .NET
- 5. RESTful web services
- 6. Llamar a un servicio web desde C++
- 7. ¿Cómo asegurar un servicio web en .net?
- 8. Service Broker And Web services
- 9. ASP.net Web Services versus WCF
- 10. Java servicio web volviendo objeto nulo a un cliente .NET
- 11. Cómo llamar a un servicio web sin wsdl en .net
- 12. diferencia entre WCF Services y Web Services y REST Service
- 13. ¿Garantizar un servicio web?
- 14. ¿Cómo llamar a un servicio web .NET desde android?
- 15. Web Services API Versioning
- 16. Codeigniter web services
- 17. Public SOAP Web Services
- 18. cliente web para servicio web
- 19. .Net - Servicio web de consumo sin WSDL
- 20. Creando un contenedor simple de C++. Net. Paso a paso
- 21. ¿Es un servicio web o un servicio web?
- 22. ¿Cómo iniciar automáticamente un servicio web C#?
- 23. ¿Alguien que utiliza Bing Web Web Services con Delphi?
- 24. Servicio web de SAP desde .NET a través de WCF
- 25. Escribiendo un cliente C# para consumir un servicio web Java que devuelve una matriz de objetos
- 26. Message Queue vs. Web Services?
- 27. Rest Web services devolviendo un 404
- 28. Agregar encabezados Http personalizados al proxy de servicio web
- 29. uso del servicio web REST de rel personalizados - 'rel'
- 30. REST Web Services API Design
Podría ser mejor si pudiera ser específico acerca de las dificultades que está encontrando. ¿Qué estás tratando de hacer realmente? Quizás algunos ejemplos concretos ayuden. ¿Qué quiere decir con "pasar un objeto personalizado"? eso podría significar muchas cosas. Algunos detalles ayudarán. – Cheeso