我有一个网络服务。此Web服务的方法,返回WSSonuc类。
[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属性指定静态未知的类型。
答案 0 :(得分:2)
XDocument不是XML可序列化的。您可以替换XElement,因为此类已标记为IXMLSerializable
。
如果你决定这样做,你可能会意识到这两个对象的差异。 This似乎是一个很好的起点(除了我在MSDN上面的链接)。
或者,你可以依靠良好的'XmlDocument。
答案 1 :(得分:0)
当您找到要传递的正确类时,您还需要使用 XmlIncludeAttribute
声明可以返回哪些对象(在Webservice类或方法级别上)[XmlInclude(typeof(ANyDerivedType1))]
[XmlInclude(typeof(ANyDerivedType2))]
public WSSonuc f_Dummy()