1suli0 Ответов: 1

Как вернуть сложный объект в теле ответа POST request


Код звучит примерно так:

public async Task<AppUser> CreateUser(AppUser user, RegisterUserDto dto)
        {
            try
            {
                var result = await _userManager.CreateAsync(user, dto.Password);
                if (result.Succeeded)
                {
                    await _userManager.AddToRoleAsync(user, "Member");
                    await _context.SaveChangesAsync();
                    return user;
                }
                return null;
                
            }
            catch (Exception ex)
            {
                _logger.LogError("Error at AuthRepository at CreateUser, ex:" + ex.StackTrace, false);
            }
            return null;
        }



[HttpPost]
  [Route("createuser")]
  public async Task<IActionResult> CreateUserAcc([FromBody] RegisterUserDto userDto)
  {
      try
      {
          var identity = _mapper.Map<AppUser>(userDto);
          var result= await _repository.CreateUser(identity, userDto);
          if (result!=null)
              return Ok(result);
          else
              return BadRequest("Account alredy exists.");
      }
      catch (Exception)
      {

      }
      return BadRequest();
  }



Резюме:
Я пытаюсь создать пользователя с помощью метода CreateUser, передав ему RegisterUserDto, а затем в теле ответа POST request вернуть созданный объект user.
Действие выполняется, и пользователь создается в БД, но Postman возвращает это: Изображение

Что я уже пробовал:

Я убедился, что проверка SSL-сертификата почтальона отключена.

Bryian Tan

Что в классе RegisterUserDto?

1suli0

общественные RegisterUserDto класс
{
публичная строка Email { get; set; }
публичный строковый пароль { get; set; }
общественного строка имя { получить; набор; }
общественного строка имя { получить; набор; }
}
Это выглядит так.

Bryian Tan

попробовать вернуть ОК(создание экземпляра.Синтаксический анализ(результат));

F-ES Sitecore

Зачем нам знать, почему почтальон не может подключиться к службе, работающей на вашем компьютере? Мы не можем получить доступ к нему, чтобы диагностировать, что работает, а что нет. Я начну с самого начала though....is ваш веб-сервис действительно работает и прослушивает этот порт? Похоже, что вы используете встроенный веб-сервер Visual Studio, и он запускается только тогда, когда ваш проект запущен настолько, что вы сначала запустили его в режиме отладки. Если это проблема, то измените ее на использование IIS на вашем локальном компьютере, так как отладка API и т. д. проще, так как IIS всегда работает.

1suli0

Ну, я задал этот вопрос в надежде, что кто-то столкнулся с подобной проблемой, или чтобы получить совет. Тем не менее спасибо.

F-ES Sitecore

Я дал вам совет, это может быть 1 000 000 вещей, и я сказал вам, что это, скорее всего, будет. Если это не так, то вам нужно обновить вопрос, чтобы мы все знали и могли предложить другие вещи, на которые вы, возможно, захотите взглянуть. Лично, если что-то не может подключиться к чему-то на моей машине, самое первое, что вам нужно сделать, это установить, что что-то действительно прослушивает этот порт.

1 Ответов

Рейтинг:
12

1suli0

Настройка этого параметра в параметрах сериализатора решила проблему.

services.AddMvc(options=>....).AddJsonOptions(opt=> opt.SerializerSettings.ReferenceLoopHandling=Newtonsoft.Json.ReferenceLoopHandling.Ignore);