我正在尝试使用一个返回XMI数据的rest服务,如下所示:
<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
{
}我得到了以下异常:
无法使用XmlSerializer反序列化具有根名称“”XMI“”和根命名空间“”http://www.omg.org/XMI“”(对于操作“”MyMethod“”和协定(“”IMyService“”,“”http://tempuri.org/'))的XML体。“”确保将与XML对应的类型添加到服务的已知类型集合中。
有人有什么想法吗?(我可以在没有命名空间的情况下使用其他REST服务)
发布于 2012-03-10 19:41:33
好的,我自己找到了答案:你必须指定命名空间和根元素名称:
[XmlRoot(Namespace = "http://www.omg.org/XMI", ElementName = "XMI")]
public class MyData
{
}https://stackoverflow.com/questions/9635075
复制相似问题