WCF - 通过REST使用XML

时间:2012-03-09 13:48:11

标签: xml wcf rest

我正在尝试使用一个返回XMI数据的休息服务:

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

我想在这样的服务合同中使用它:

[ServiceContract]
[XmlSerializerFormat]
interface IMyService
{

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

...

}

我的数据合约看起来像这样(测试时为空):

[DataContract]
[XmlRoot]
public class MyData
{
}

我得到以下异常:

无法使用根名称'XMI'和根名称空间'http://www.omg.org/XMI'反序列化XML主体(对于操作'MyMethod'和契约('IMyService','http:// tempuri)。 org /'))使用XmlSerializer。确保将与XML对应的类型添加到服务的已知类型集合中。

任何想法? (我能够使用没有命名空间的其他REST服务)

1 个答案:

答案 0 :(得分:0)

好的,我自己找到了答案: 您必须指定名称空间和根元素名称:

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