5

XmlWriter を使用して XML のブロックを構築する WCF サービスがあります。完了したら、WCF がそれを XmlDocument として返すようにします。

しかし、[OperationContract] に XmlDocument がある場合は機能しません。

[OperationContract]
XmlDocument GetNextLetter();

WCF テスト ユーティリティでは、次の結果が得られます。

System.Runtime.Serialization.InvalidDataContractException: タイプ 'System.Xml.XmlDocument' をシリアル化できません。

4

4 に答える 4

14

運用契約で行ったことに xmlserializer を追加します

[OperationContract,XmlSerializerFormat]
XmlDocument GetNextLetter();

これでできます!

于 2012-06-04T12:54:36.980 に答える
10

.Net 3.5を使用している場合は、代わりにXElementを返すことができます。これはIXmlSerializableを実装します。これは、DataContractSerializerで機能させるために必要な不足している要素です。

于 2009-06-08T13:21:43.310 に答える
3

DataContractSerializerは、XmlElementインスタンスをシリアル化できます。したがって、XmlDocumentインスタンスのDocumentElementプロパティを返すだけです。参照:MSDN

于 2009-06-08T13:26:01.617 に答える
2

相手側で再構築できるため、XMLDocument は送信しないでください。

おそらく、必要な文字列を送信するか、XML にシリアル化して送信できるビジネス オブジェクトを構築する必要があります。

XSD があり、それからシリアル化できるビジネス オブジェクトを作成する場合は、.net フレームワークを使用した XSD.exe ツールを参照してください。

于 2009-06-08T13:19:14.190 に答える