1
resposta

The supplied value is invalid (json, webapi, .net core, entityframeworkcore)

Boa noite galera, sou novo nisso tudo..

Gostaria de uma ajuda com o código abaixo:

Minha classe

public long Id { get; set; } // Auto increment
 public string Username { get; set; }
 public byte[] Userpass { get; set; }
 public string Userstatus { get; set; }
 public bool Savelogin { get; set; }

Meu Método

public async Task<bool> Create(Useraccess useraccess)
{
    try
    {
        using (var ctx = new DBAContext())
        {
            await ctx.Useraccess.AddAsync(useraccess);
            await ctx.SaveChangesAsync();
        }
        return true;
    }
    catch (Exception ex)
    {
        return false;
    }
}

Meu Post

[HttpPost]
public async Task<IActionResult> PostUseraccess([FromBody] Useraccess useraccess)
{
    var ctx = await new Useraccess().Create(useraccess);

    if (ctx is false)
    {
        return NotFound();
    }
    else
    {
        return Ok();
    }
}

Client Post

{
    "username":"maxuel.rodrigues",
    "userpass":"entrar12345",
    "userstatus":"inativo",
    "savelogin":false
}

Retorno

{
  "errors": {
    "userpass": [
      "The supplied value is invalid."
    ],
    "userstatus": [
      "Unexpected token when deserializing object: String. Path 'userstatus', line 4, position 23."
    ]
  },
  "type": "https://tools.ietf.org/html/rfc7231#section-6.5.1",
  "title": "One or more validation errors occurred.",
  "status": 400,
  "traceId": "|ac642c0c-453de07a3c373c59."
}
1 resposta

Oi, como você está?

Peço desculpas por demorar a te responder. Espero que você tenha superado essa dificuldade! Quando começamos a estudar tecnologia, decifrar as mensagens de erro é extremamente desafiador.

Pelo que pude perceber por seu código, o problema está na classe Useraccess. O campo Userpass está sendo definido como um array de bytes (byte[]), mas na sua requisição você está passando uma string para esse campo. Por isso, o erro "The supplied value is invalid" é retornado.

Para resolver esse problema, você pode alterar o tipo do campo Userpass para string na sua classe Useraccess. Dessa forma, você poderá receber a senha como uma string na sua requisição e salvar corretamente no banco de dados.

Além disso, o erro relacionado ao campo Userstatus indica que há um token inesperado ao desserializar o objeto. Pode ser que o valor passado para esse campo não esteja sendo reconhecido corretamente. Verifique se o valor que você está passando para Userstatus está correto e se corresponde às opções esperadas para esse campo.

Todavia, vale ressaltar que como você postou sua pergunta há algum tempo é possível que a constante evolução da tecnologia impacte na resolução da sua dúvida.

Abraço.