我正在尝试使用一个返回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服务)
答案 0 :(得分:0)
好的,我自己找到了答案: 您必须指定名称空间和根元素名称:
[XmlRoot(Namespace = "http://www.omg.org/XMI", ElementName = "XMI")]
public class MyData
{
}