1

最近、StackOverflow に質問を投稿しました。

WCF での SOAP メッセージの逆シリアル化の問題 - フィールドに null 値がある

XmlSerializerこれは、SOAP メッセージのシリアライズ/デシリアライズに使用されるWCF シリアライゼーション エンジンの 1 つに関するものでした。デシリアライゼーションは最初はうまくいきませんでした - いくつかの名前空間の問題です。

現在に戻る:)

で装飾されたフィールドは、単純な型の[XmlElement, MessageBodyMember]場合、適切に逆シリアル化されるようになりました。

カスタムタイプに関して問題があります:それらは設定されていますが、それらのフィールドにはnull値があります:(

XmlSerializer で行う必要がある構成はありますか?

[MessageContract]
public class Request
{
    [XmlElement(Form = System.Xml.Schema.XmlSchemaForm.Unqualified), MessageBodyMember]
    public XType X { get; set; }
}

[what to write here?]
public class XType
{
    [XmlElement(Form = System.Xml.Schema.XmlSchemaForm.Unqualified), body member?]
    public string AString { get; set; }

    ... maybe another nested complex objects
}
4

1 に答える 1

1

サービスのクライアントに、WCFが使用するものと「互換性のない」シリアル化エンジンがあるため、これらのシリアル化の問題が発生しました。もちろん、リクエストはまだ標準のXML(SOAP 1.2)でしたが、WCFはMicrosoft製品です:)

いくつかの回避策:

  • MessageFormaterを追加します-サーバー側でいくつかの逆シリアル化ロジックを実装します-それについての良い記事です。
  • MessageInspectorを追加します-SOAPリクエストを読み取り、いくつかのXMLフォーマットを実行します(逆シリアル化が正常に機能するように)-このリンクからそれについて読むことができます。
于 2012-08-07T19:19:13.410 に答える