【发布时间】:2010-05-13 13:49:39
【问题描述】:
我正在编写一个符合国际 HTTP 标准的服务,并且有一种方法可以返回三种不同的 XML 结果,分别称为 Single、Multiple 和 Error。现在我编写了一个 IXmlSerializable 类,它可以使用这些结果中的每一个并生成它们。但是,WCF 似乎坚持我只能有一个返回 XML 根名称。我必须为我的自定义对象选择一个 XmlRoot, Single、Multiple 或 Error。
如何设置 WCF 以便在运行时选择根目录?
这是我目前拥有的。
/// <summary>
/// A collection of items.
/// </summary>
[XmlRoot("Multiple", Namespace = "DAV:")]
public sealed class ItemCollection : IEnumerable<Item>, IXmlSerializable
/// <summary>
/// Processes and returns the items.
/// </summary>
[WebInvoke(Method = "POST", UriTemplate = "{*path}", BodyStyle = WebMessageBodyStyle.Bare)]
[OperationContract]
[XmlSerializerFormat]
ItemCollection Process(string path);
ItemCollection 实现了 IXmlSerializable 并且可以选择写入哪些可能的返回值,但是根 XML 节点总是多个,因为 ItemCollection 类的 XmlRoot 属性。
【问题讨论】:
标签: xml wcf serialization rest ixmlserializable