1

私は国際的な HTTP 標準に合わせてサービスを作成しています。単一、複数、およびエラーと呼ばれる 3 つの異なる XML 結果を返すことができるメソッドが 1 つあります。これで、これらの各結果を使用して生成できる IXmlSerializable クラスを作成しました。ただし、WCF は、単一の戻り XML ルート名しか持てないと主張しているようです。Single、Multiple、または Errorのいずれかのカスタム オブジェクトの 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 を実装し、どの戻り値を書き込むかを選択できますが、ItemCollection クラスの XmlRoot 属性により、ルート XML ノードは常に複数になります。

4

1 に答える 1

1

秘訣は、XmlRootを使用する代わりに、IsAnyをtrueに設定してXmlSchemaProviderを使用することです。

詳細については、こちらをお読みください:http: //msdn.microsoft.com/en-us/library/ms733901.aspx

于 2010-05-26T12:39:44.540 に答える