WCF - consumir XMI sobre REST

Estoy tratando de consumir un servicio de descanso que devuelve datos XMI como este:

<xmi:XMI xmlns:xmi="http://www.omg.org/XMI" xmi:version="2.0">
...
</...>

Quiero consumir esto en un contrato de servicio como este:

[ServiceContract]
[XmlSerializerFormat]
interface IMyService
{

    [OperationContract]
    [WebGet(
        BodyStyle = WebMessageBodyStyle.Bare,
        ResponseFormat = WebMessageFormat.Xml,
        UriTemplate = "myMethod")]
    MyData MyMethod();

...

}

Mi contrato de datos se ve así (vacío para probar):

[DataContract]
[XmlRoot]
public class MyData
{
}

Obtengo la siguiente excepción:

No se puede deserializar el cuerpo XML con el nombre raíz 'XMI' y el espacio de nombres raíz 'http://www.omg.org/XMI' (para la operación 'MyMethod' y el contrato ('IMyService', 'http://tempuri.org/') )) usando XmlSerializer. Asegúrese de que el tipo correspondiente al XML se agregue a la colección de tipos conocidos del servicio.

¿Alguien tiene alguna idea? (Puedo consumir otros servicios REST sin espacios de nombres)

preguntado el 09 de marzo de 12 a las 13:03

1 Respuestas

Ok, encontré la respuesta yo mismo: debe especificar el espacio de nombres y el nombre del elemento raíz:

[XmlRoot(Namespace = "http://www.omg.org/XMI", ElementName = "XMI")]
public class MyData
{
}

respondido 10 mar '12, 11:03

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.