Asp.net web api 允许在Web API数据契约中使用自定义XML
我正在开发一个ASP.NETWebAPI服务,它允许用户发布元数据 在用户发布的一个数据契约中,他们应该能够以XML格式发布自己的自定义元数据。这是一个例子: 当它被反序列化时,我收到一个异常: 集合类型“System.Xml.XmlNode”无法反序列化,因为它 没有类型为的参数的有效Add方法 “System.Object”Asp.net web api 允许在Web API数据契约中使用自定义XML,asp.net-web-api,deserialization,Asp.net Web Api,Deserialization,我正在开发一个ASP.NETWebAPI服务,它允许用户发布元数据 在用户发布的一个数据契约中,他们应该能够以XML格式发布自己的自定义元数据。这是一个例子: 当它被反序列化时,我收到一个异常: 集合类型“System.Xml.XmlNode”无法反序列化,因为它 没有类型为的参数的有效Add方法 “System.Object” 我不完全理解为什么它试图向XmlNode添加任何内容,但不管出于什么原因,它都失败了。有没有其他方法可以做这种事情,比如反序列化到不同的类型?我尝试反序列化为字符串,但
我不完全理解为什么它试图向XmlNode添加任何内容,但不管出于什么原因,它都失败了。有没有其他方法可以做这种事情,比如反序列化到不同的类型?我尝试反序列化为字符串,但也出现了异常。数据协定序列化只支持原语和一些特殊类型。必须使用XmlElement而不是XmlNode 尝试:
请参见数据协定序列化仅支持原语和一些特殊类型。必须使用XmlElement而不是XmlNode 尝试:
请参见是否可以尝试使用XmlElement而不是XmlNode?我相信序列化程序只支持反序列化的特殊情况元素。XElement也应该可以使用。您可以尝试使用XmlElement而不是XmlNode吗?我相信序列化程序只支持反序列化的特殊情况元素。XElement也应该有效。直截了当,谢谢!我真的认为我应该能够自己找到这个,所以-1对我来说是一个糟糕的研究。仅供参考,我发现XmlNode[]更适合上面的例子。使用XmlElement时,必须有一个根元素,但使用XmlNode[]时,可以有几个元素作为直接子元素。直截了当地说,谢谢!我真的认为我应该能够自己找到这个,所以-1对我来说是一个糟糕的研究。仅供参考,我发现XmlNode[]更适合上面的例子。对于XmlElement,您必须有一个根元素,但是对于XmlNode[],您可以有几个元素作为直接子元素。
<Delivery>
<Type>Direct</Type>
<Time>12:00:01</Time>
<Format>Segmented</Format>
<CustomMetadata>
<ClientReference>R46375683</ClientReference>
<Contact>Me@There.com</Contact>
</CustomMetadata>
</Delivery>
[DataMember(EmitDefaultValue=false)]
public XmlNode CustomMetadata { get; set; }
[DataMemeber]
public XmlElement CustomMetadata { get; set; }