1

我正在编写一个符合国际 HTTP 标准的服务,并且有一种方法可以返回三种不同的 XML 结果,分别称为 Single、Multiple 和 Error。现在我编写了一个 IXmlSerializable 类,它可以使用这些结果中的每一个并生成它们。但是,WCF 似乎坚持我只能有一个返回 XML 根名称。我必须为我的单个、多个或错误的自定义对象选择一个 XmlRoot。

如何设置 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 属性。

4

1 回答 1

1

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

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

于 2010-05-26T12:39:44.540 回答