contient des cycles et ne peut pas être sérialisé si le suivi des références est désactivé, json.net et webapi

J'obtiens le message d'erreur:

 Object graph for type 'System.Collections.Generic.List`1[[Proj.Model.Prom, Proj.Model, 
 Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]' contains cycles and cannot be 
 serialized if reference tracking is disabled.

La lecture de ce sujet, qui semble être le sérialiseur, mais Json.Net prétend être la solution et je l'ai lu, WebApi et Framework 4.5 a par défaut. Ainsi en Est-il de venir par défaut? Si oui, Pourquoi je suis encore en train d'erreur?

Merci! Guillermo.

EDIT: Ajout de code

using System;
using System.Collections.Generic;
using System.Data.Spatial;

namespace Proj.Model
{
    public class Prom
    {
        public Prom()
        {
            this.Stores = new List<Store>();
            this.Branches = new List<Branch>();
            this.Products = new List<Product>();
        }

        public int Id { get; set; }
        public string Name { get; set; }
        public DbGeography Location { get; set; }
        public string Latitude { get; set; }
        public string Longitude { get; set; }
        public int StateId { get; set; }
        public int CategoryId { get; set; }

        public virtual ICollection<Store> Stores { get; set; }
        public virtual ICollection<Branch> Branches { get; set; }
        public virtual ICollection<Product> Products { get; set; }

        public virtual Category Category { get; set; }
        public virtual State  State  { get; set; }

    }
}

using System;
using System.Collections.Generic;

namespace Proj.Model
{
    public class Category
    {
        public Category()
        {
            this.Proms = new List<Prom>();
        }

        public int Id { get; set; }
        public string Name { get; set; }
        public string Description { get; set; }

        public virtual ICollection<Prom> Proms { get; set; }
    }
}

Puis en exécutant quelque chose comme ceci renvoie l'erreur

public IEnumerable<Category> GetList(int estadoId, string idTiposTarjetasList)
{
    var ids = "1,2,3,4".Split(',');
    var intIds = ids.Select(int.Parse);

    var Categories = Uow.Categorias.GetAllIncluding(c => c.Proms).ToList();
    foreach (var category in Categories)
    {
        var proms = category.Proms.Where(p => intIds.Contains(p.Id) && p.StateId == stateId).ToList();
        category.Proms = proms;
    }
    return Categories
}

source d'informationauteur polonskyg