2012-08-01 47 views
1

我最近發佈StackOverflow上一個問題:- WCF的XmlSerializer

SOAP message deserialization issue in WCF - fields have null values

這是一些關於一個WCF的序列化引擎,XmlSerializer的,用來序列化/反序列化SOAP消息。起初反序列化不起作用 - 一些命名空間問題。

返回呈現:)

領域飾[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 
} 
+1

爲什麼使用XmlSerializer?你必須使用它嗎?這是舊的和過時的。 – 2012-08-08 01:19:03

+0

XmlSerializer根據命名空間範圍等(就我所知)而言,DataContractSerializer更具可配置性 - 例如,我需要「XmlSchemaForm = Unqualified」設置。 – 2012-08-08 05:36:32

回答

1

我了?那些序列化問題,因爲服務的客戶端有一個序列化引擎,與WCF使用的序列化引擎不是「兼容的」。請求仍然是標準的XML,當然是(SOAP 1.2),但是嘿,WCF是微軟產品:)

一些解決方法:

  • 添加MessageFormater - 實現在服務器端反序列化的一些邏輯 - 一個很好的article有關;
  • 添加一個MessageInspector - 讀取SOAP請求並執行一些XML格式化(以便反序列化可以正常工作) - 您可以在this link之後閱讀它。