Pour moi, c'était un problème avec le référencement circulaire.
La réponse acceptée n'a pas fonctionné pour moi car elle ne modifie que le comportement du formateur JSON, mais j'obtenais du XML lorsque j'ai appelé le service depuis le navigateur.
Pour résoudre ce problème, j'ai désactivé XML et forcé uniquement le retour de JSON.
Dans le fichier Global.asax, placez les lignes suivantes en haut de votre méthode Application_Start:
GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore;
GlobalConfiguration.Configuration.Formatters.Remove(GlobalConfiguration.Configuration.Formatters.XmlFormatter);
Désormais, seuls les résultats JSON seront renvoyés. Si vous avez besoin de résultats XML, vous devrez trouver une solution différente.
InnerException
propriété de l'exception de sérialisation pour savoir ce qui a exactement provoqué l'échec de la sérialisation.