2009-05-22 11 views
3

J'ai été capable de retourner un HashTable à partir d'un service Web que j'ai configuré pour un .Net 2.0, mais le service ne parvient pas à rétablir un DataTable dans JSON. Je continue d'obtenir l'erreur suivante: "Une référence circulaire a été détectée lors de la sérialisation d'un objet". Des conseils?Comment renvoyer un DataTable à partir du service Web .Net?

[WebMethod(EnableSession = true) ] 
public DataTable getSavedAddresses() 
{ 
    DataTable dt = new DataTable(); 
    if (Session["ClientID"] != null) 
    { 
     int clientId = Convert.ToInt32(Session["ClientID"]); 
     dt = Address.GetClientShippingAddresses(clientId); 
    } 
    return dt; 

}

Répondre

1

La référence circulaire est probablement due à DataTable ayant une propriété Columns, et chaque objet a une propriété DataColumnTable.

Les informations contenues dans this blog post by Rick Strahl peuvent être utiles pour vous, peut-être.

+0

Intéressant. Oui, je l'ai lu, mais je ne pouvais pas le comprendre. – GreenEggs

+0

Je pense que je vais essayer d'utiliser XML à la place. – GreenEggs

+0

Je pense que cette réponse suggère qu'un sérialiseur personnalisé est nécessaire. C'est ce que fait Rick Strahl dans l'article du blog, d'abord avec JSON.NET, puis avec la bibliothèque JavaScriptSerializer intégrée. – Spivonious

Questions connexes