2010-07-21 71 views
0

我有一個Web服務。此Web服務的一種方法返回WSSonuc類。Web服務序列化問題

[Serializable] 
public class WSSonuc 
{ 

    public int M_Durum { get; set; } 
    public object M_SonucNesne { get; set; } 
} 

這是我的Web服務方法:

[WebMethod] 
[SoapHeader("_ticket", Direction = SoapHeaderDirection.InOut)] 
public WSSonuc f_Dummy() 
{ 
    WSSonuc ws = new WSSonuc(); 
    ws.M_Durum = 1; 
    ws.M_SonucNesne = new XDocument(); 
    return ws; 
} 

我已經從網站上的異常,當我打電話f_Dummy;例外是:

System.Web.Services.Protocols.SoapException:服務器無法處理請求。 ---> System.InvalidOperationException:生成XML文檔時發生錯誤。 ---> System.InvalidOperationException:類型System.Xml.Linq.XDocument不是預期的。使用XmlInclude或SoapInclude屬性指定靜態未知的類型。

回答

2

XDocument不是XML可序列化的。您可以用XElement替代,因爲此課程標記爲IXMLSerializable

如果您決定這麼做,那麼認識到這兩個對象的差異可能很重要。 This似乎是一個開始的好地方(除了上面給MSDN的鏈接之外)。

或者,你可以回到好的'XmlDocument

0

時候你會發現正確的類來傳遞,你也需要申報哪些對象可以返回(WebService的類或方法級別)使用XmlIncludeAttribute

[XmlInclude(typeof(ANyDerivedType1))] 
[XmlInclude(typeof(ANyDerivedType2))] 
public WSSonuc f_Dummy()