net :: ERR_CONNECTION_RESET 200 (ОК) при выполнении метода GET - PullRequest
0 голосов
/ 25 февраля 2019

Я изменил свой класс модели квартир, добавив идентификатор BuyerID, который является внешним ключом, к другому классу покупателя, например:

public class Apartment
    {
        [Key]
        public int ID { get; set; }
        public string Title { get; set; }
        public int NbofRooms { get; set; }
        public int Price { get; set; }
        public string Address { get; set; }
        public int BuyerId { get; set; } 

    }

Кроме того, у меня есть следующий класс модели покупателей:

public class Buyer
    {
        [Key]
        public int ID { get; set; }
        public string FullName { get; set; }
        public int Credit { get; set; }
        public ICollection<Apartment> apartments { get; set; }
    }

Так что он также содержит коллекцию квартир.и из-за этого, возможно, мой метод Get больше не работает и возвращает следующую ошибку: GET http://localhost:54632/api/Apartments net :: ERR_CONNECTION_RESET 200 (OK)

Единственный метод GET, который не работает, это этот:

// GET: api/Apartments
        [HttpGet]
        public IEnumerable<Apartment> GetApartments()
        {
            return _context.Apartments;
        }

В противном случае другие, например, такие:

// GET: api/Apartments/5
        [HttpGet("{id}")]
        public async Task<IActionResult> GetApartment([FromRoute] int id)
        {
            if (!ModelState.IsValid)
            {
                return BadRequest(ModelState);
            }

            var apartment = await _context.Apartments.SingleOrDefaultAsync(m => m.ID == id);

            if (apartment == null)
            {
                return NotFound();
            }

            return Ok(apartment);
        }

работают нормально. Также, если я попробую ссылку на chrome, она вернет апартаменты, но если я попробую на Postman илиAngular App возвращает ошибку.Что может быть причиной этой ошибки?Спасибо.

Ответы [ 2 ]

0 голосов
/ 17 июня 2019

У меня была та же проблема, и это было связано с созданием цикла самоссылки в данных, которые я пытался сериализовать.Глядя на недавнее изменение, которое вы сделали, похоже, вы также создали дерево объектов с циклом самоссылки, сославшись на Buyer from Apartments.

Json.Net расстраивается из-за этого и сдается.Я ожидаю, что будет сгенерировано исключение, как в этом вопросе , но я его не получил, у меня были те же симптомы, как вы описали.

Если у вас та же самая проблема с корнем, это решается установкой JSON.Net для обнаружения и игнорирования циклов самоссылки во время конфигурации запуска, как объяснено здесь или здесь для ядра asp.net .

Asp.Сеть:

HttpConfiguration config = GlobalConfiguration.Configuration;

config.Formatters.JsonFormatter
            .SerializerSettings
            .ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore;

Asp.net Core:

services.AddMvc().AddJsonOptions(options =>
{
    options.SerializerSettings.ReferenceLoopHandling = 
                               Newtonsoft.Json.ReferenceLoopHandling.Ignore;
});
0 голосов
/ 26 февраля 2019

откройте Chrome, затем откройте DevTools, нажав F12 и перейдите на вкладку сети.Найдите свой запрос API и выберите copy> copy as cURL

, теперь вы можете сравнить запрос curl и запрос почтальона, чтобы увидеть разницу.Разница даст вам проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...