Web服务序列化问题

时间:2010-07-21 13:25:02

标签: c# asp.net serialization web-services xml-serialization

我有一个网络服务。此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属性指定静态未知的类型。

2 个答案:

答案 0 :(得分:2)

XDocument不是XML可序列化的。您可以替换XElement,因为此类已标记为IXMLSerializable

如果你决定这样做,你可能会意识到这两个对象的差异。 This似乎是一个很好的起点(除了我在MSDN上面的链接)。

或者,你可以依靠良好的'XmlDocument

答案 1 :(得分:0)

当您找到要传递的正确类时,您还需要使用 XmlIncludeAttribute

声明可以返回哪些对象(在Webservice类或方法级别上)
[XmlInclude(typeof(ANyDerivedType1))]
[XmlInclude(typeof(ANyDerivedType2))]
public WSSonuc f_Dummy()