由於xsi:type =「p:OUTPUT-HEADER」屬性,我正在試圖反序列化與WCF SOAP服務FAULT詳細信息部分相對應的這段XML代碼塊:XmlSerializer和xsi:反序列化
<p:OUTPUT-HEADER xsi:type="p:OUTPUT-HEADER" xmlns:p="http://aaa.bbb.ccc/v2" xmlns:ns0="http://aaa.bbb.ccc/v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<FAULT>
<p:COD-ERROR>2951</p:COD-ERROR>
<p:COD-SEV>8</p:COD-SEV>
<p:MSG-ERROR>Error message</p:MSG-ERROR>
</FAULT>
<CNL-OUT>xxx</CNL-OUT>
</p:OUTPUT-HEADER>
這是我使用的類:
[XmlInclude(typeof(OutputHeader))]
public abstract class FaultDetail
{
[XmlElement(ElementName = "FAULT", Namespace = "")]
public Fault FaultSection{ get; set; }
[XmlElement(ElementName = "CNL-OUT", Namespace = "")]
public string ClnOut{ get; set; }
}
[XmlRoot(ElementName = "OUTPUT-HEADER", Namespace = "http://aaa.bbb.ccc/v2")]
public class OutputHeader : FaultDetail
{
}
public class Fault
{
[XmlElement(ElementName = "COD-ERROR")]
public int CodigoError { get; set; }
[XmlElement(ElementName = "COD-SEV")]
public int Severidad { get; set; }
[XmlElement(ElementName = "MSG-ERROR")]
public string Mensaje { get; set; }
}
XmlSerializer的:
XmlSerializer x = new XmlSerializer(typeof(OutputHeader));
其中t他錯誤調用反序列化方法時,我得到:
「指定的類型無法識別:命名 = 'OUTPUT-標頭',命名空間= 'http://aaa.bbb.ccc/v2',在< OUTPUT-HEADER 的xmlns = 'http://aaa.bbb.ccc/v2' >「。
是否可以修飾類以正確反序列化此XML? 任何想法非常感謝,謝謝!
WCF將序列化和反序列化通過導線自動發送的內容。是否有一個特定的原因需要手動完成? –
我明白'auto'的方法應該是使用FaultException.GetDetail,但沒有OutputHeader類已生成,因爲wsdl不包含任何與之相關的信息。所以我的下一步是獲取FaultException.GetReaderAtDetailContents()流並嘗試對其進行反序列化。或者我在這裏錯過了什麼?謝謝! –
mack