Para mí, esto fue un problema con las referencias circulares.
La respuesta aceptada no me funcionó porque solo cambia el comportamiento del formateador JSON, pero estaba obteniendo XML cuando llamé al servicio desde el navegador.
Para solucionar esto, apagué XML y obligué a que solo se devolviera JSON.
En el archivo Global.asax, coloque las siguientes líneas en la parte superior de su método Application_Start:
GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore;
GlobalConfiguration.Configuration.Formatters.Remove(GlobalConfiguration.Configuration.Formatters.XmlFormatter);
Ahora solo se devolverán los resultados JSON. Si necesita resultados XML, deberá encontrar una solución diferente.
InnerException
propiedad de la excepción de serialización para averiguar qué causó exactamente que fallara la serialización.