Me he encontrado con un problema al tratar de devolver un objeto que contiene una colección de childobjects que de nuevo puede contener una colección de objetos nietos. Me sale un error, 'conexión cerrada por la fuerza por el host'.Tipos de datos complejos en WCF?
¿Hay alguna manera de que esto funcione? Actualmente tengo una estructura parecida a esta:
seudo código:
Person:
IEnumerable<Order>
Order:
IEnumerable<OrderLine>
Los tres objetos tienen el atributo DataContract y todas las propiedades públicas que quiero expuesta (incluido el IEnumerable de) tener el atributo DataMember.
Tengo varios OperationContract en mi servicio y todos los métodos que devuelven un solo objeto O un IEnumerable de un objeto funcionan perfectamente. Es solo cuando intento anidar IEnumerable que se vuelve malo. También en mi referencia de servicio al cliente elegí la lista genérica como mi tipo de colección. Solo quiero enfatizar, , solo una de mis operaciones/métodos falla con este error; el resto de ellos funciona perfectamente.
EDITAR (descripción más detallada de error):
[SocketException (0x2746): An existing connection was forcibly closed by
the remote host]
[IOException: Unable to read data from the transport connection:
An existing connection was forcibly closed by the remote host.]
[WebException: The underlying connection was closed: An unexpected
error occurred on a receive.]
[CommunicationException: An error occurred while receiving the HTTP
response to http://myservice.mydomain.dk/MyService.svc. This could
be due to the service endpoint binding not using the HTTP protocol.
This could also be due to an HTTP request context being aborted by
the server (possibly due to the service shutting down). See server
logs for more details.]
he intentado buscar registros, pero no puedo encontrar ninguna ... También estoy usando un wsHttpBinding y un extremo HTTP.
¿Hay algo en sus objetos que no está serializando correctamente? –
No lo sé. Estaba pensando que tal vez un IEnumberable podría no ser serializado? ¿Pero cómo lo descubro? Puedo depurar todo el camino hasta el retorno del OperationContract real y todo está bien, pero el transporte parece ir mal. No tengo el atributo Serializar, pero en su lugar uso [DataMember] –
, estoy enfrentando el mismo error que ustedes ... mis clases también están definidas con propiedades enum, pero no estoy viendo esto como un problema en ninguna parte ... las enumeraciones deberían estar bien ... y ¿qué quieres decir con establecer el valor predeterminado? son tipos de valor por lo que siempre tienen un valor predeterminado.Voy a tratar de eliminar las propiedades enum y ver si eso lo arregla ... aquí hay algo de información sobre clases de contrato de datos compatibles http://msdn.microsoft.com/en-us/library/ms731923.aspx –