Ошибка при получении данных из контроллера ASP.NET Web API2

Всем привет использую ASP.NET Web Api с типом аутентификации Individual User Accounts при отправки данных клиенту полученных из БД, я на клиенте получаю код статуса 500 при этом исключений на сервере не наблюдалось. Есть что-то что блокирует?

 public async Task<HttpResponseMessage> GetCard(string data)
        {
            string[] data2 = JsonConvert.DeserializeObject<string[]>(data);
            if (!ModelState.IsValid)
            {
                return Request.CreateResponse(BadRequest(ModelState));
            }
            if (User.IsInRole("Administrator"))
            {
                IEnumerable<WorkerCard> card = new CorpDb().WorkerCards.ToList();

                return Request.CreateResponse(HttpStatusCode.OK,card);
            }
            return Request.CreateResponse(Unauthorized());
        }

Сторона сервера введите сюда описание изображения


Ответы (1 шт):

Автор решения: ваня к

Проблема решена! @S.H. Спасибо что направили куда посмотреть Тут решение. Проблема была в сереализации формата json либо в десереализации, на стороне сервера по этому и возваращало Status Code 500 у клиента. Чтоб эту проблему решить есть два варианта для одного контекста и для множества контекстов. Опять же повторюсь я использовал ASP.NET Web Api с типом аутентификации Individual User Accounts.

Если у вас один контекст (DbContext)

Затем в файле Global.asax в методе Application_Start() Добавляем строку

 JsonConvert.DefaultSettings = () => new JsonSerializerSettings { Formatting = Formatting.Indented, ReferenceLoopHandling = ReferenceLoopHandling.Ignore };

Будет выглядеть таким образом метод

protected async void Application_Start()
{
        AreaRegistration.RegisterAllAreas();
        GlobalConfiguration.Configure(WebApiConfig.Register);
        FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
        RouteConfig.RegisterRoutes(RouteTable.Routes);
        BundleConfig.RegisterBundles(BundleTable.Bundles);
        JsonConvert.DefaultSettings = () => new JsonSerializerSettings { Formatting = Formatting.Indented, ReferenceLoopHandling = ReferenceLoopHandling.Ignore };
}

Если же у вас несколько контекстов То в каждом контексте нужно внести две строчки

Configuration.LazyLoadingEnabled = false;
Configuration.ProxyCreationEnabled = false;

После этого должно выглядеть таким образом

public class ApplicationDbContext: IdentityDbContext<ApplicationUser> 
{
    public DbSet<Shop> Shops { get; set; }
    public DbSet<Detail> Details { get; set; } 
    public ApplicationDbContext() : base("DefaultConnection")
    {
        Configuration.LazyLoadingEnabled = false;
        Configuration.ProxyCreationEnabled = false;
    }
    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        base.OnModelCreating(modelBuilder);
    }
    public static ApplicationDbContext Create()
    {
        return new ApplicationDbContext();
    }
}

 public class ModelContext2: DbContext 
{
    public DbSet<User> Users{ get; set; }
    public DbSet<Profile> Profiles{ get; set; } 

    public ModelContext2() : base("DefaultConnection")
    {
        Configuration.LazyLoadingEnabled = false;
        Configuration.ProxyCreationEnabled = false;
    }
    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        base.OnModelCreating(modelBuilder);
    }
}
→ Ссылка