WebService生成XML文檔時出錯。不應是類型XXXX。使用XmlInclude或SoapInclude屬性靜態指定非已知的類型。


有自定義的3個類,House、SaleHouse、RentHouse。SaleHouse和RentHouse是House類的子類。在WebService中有一個方法是返回House類。

[WebMethod]
public House Get(int houseId)
{
    return House.Get(houseId);
}

調試報錯如下:

System.InvalidOperationException: 生成 XML 文檔時出錯。 --->
System.InvalidOperationException:
不應是類型 YajukeLib.Housing.SaleHouse。
使用 XmlInclude 或 SoapInclude 屬性靜態指定非已知的類型。

在網上查了一下資料,說是要使用屬性XmlIncludeAttribute。然后將[XmlInclude(typeof(House))]加到House類和WebService中。還是報上述的錯誤。加[Serializable]也不管用。

又在MSDN上查找XmlIncludeAttribute的定義如下:允許 XmlSerializer 在它序列化或反序列化對象時識別類型。所以我想是因為方法返回的類型其實是House類的子類,XmlSerializer在序列化時只能識別父類,而不能識別子類,所以導致序列化的錯誤。所以我將[XmlInclude(typeof(SaleHouse))]和[XmlInclude(typeof(RentHouse))]同時加到WebService中,問題解決。

[XmlInclude(typeof(SaleHouse))]
[XmlInclude(typeof(RentHouse))]
public class HouseService : System.Web.Services.WebService

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM