2010-07-21 5 views
0

J'ai un service Web. Une méthode de ce service Web renvoie la classe WSSonuc.Problème de sérialisation du service Web

[Serializable] 
public class WSSonuc 
{ 

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

ceci est ma méthode de service 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; 
} 

J'ai une exception à partir du site Web lorsque j'appelle f_Dummy; L'exception est:

System.Web.Services.Protocols.SoapException: Le serveur n'a pas pu traiter la demande. ---> System.InvalidOperationException: Une erreur est survenue lors de la génération du document XML. ---> System.InvalidOperationException: Le type System.Xml.Linq.XDocument n'était pas attendu. Utilisez l'attribut XmlInclude ou SoapInclude pour spécifier les types qui ne sont pas connus de manière statique.

Répondre

2

XDocument n'est pas sérialisable XML. Vous pouvez remplacer XElement à la place, car cette classe est marquée IXMLSerializable.

Si vous décidez de le faire, il est probablement important que vous réalisiez les différences entre ces deux objets. This semble être un bon point de départ (en plus des liens que j'ai placés au-dessus de MSDN).

Vous pouvez également vous rabattre sur le bon XmlDocument.

0

Lorsque vous trouverez la classe appropriée pour passer, vous devez également déclarer les objets pourraient être renvoyés (sur la classe de Webservice ou méthode de niveau) en utilisant XmlIncludeAttribute

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