Per me questo era un problema con i riferimenti circolari.
La risposta accettata non ha funzionato per me perché cambia solo il comportamento del formattatore JSON, ma stavo ottenendo XML quando ho chiamato il servizio dal browser.
Per risolvere questo problema, ho disattivato XML e ho costretto a restituire solo JSON.
Nel file Global.asax, inserisci le seguenti righe all'inizio del tuo metodo Application_Start:
GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore;
GlobalConfiguration.Configuration.Formatters.Remove(GlobalConfiguration.Configuration.Formatters.XmlFormatter);
Ora verranno restituiti solo i risultati JSON. Se hai bisogno di risultati XML, dovrai trovare una soluzione diversa.
InnerException
proprietà dell'eccezione di serializzazione per scoprire cosa ha causato esattamente il fallimento della serializzazione.