【问题标题】:Different return XML in a WCF OperationWCF 操作中的不同返回 XML
【发布时间】: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


    【解决方案1】:

    事实证明,诀窍是使用 XmlSchemaProvider 并将 IsAny 设置为 true,而不是使用 XmlRoot。

    阅读此处了解更多信息:http://msdn.microsoft.com/en-us/library/ms733901.aspx

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-07-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多