J'ai récemment mis à niveau mon API Web de .Net core 2.2 vers .Net core 3.0 et j'ai remarqué que mes demandes recevaient maintenant une erreur lorsque je passais une énumération dans un message à mon point de terminaison. Par exemple:
J'ai le modèle suivant pour mon point de terminaison api:
public class SendFeedbackRequest
{
public FeedbackType Type { get; set; }
public string Message { get; set; }
}
À quoi ressemble le FeedbackType:
public enum FeedbackType
{
Comment,
Question
}
Et voici la méthode du contrôleur:
[HttpPost]
public async Task<IActionResult> SendFeedbackAsync([FromBody]SendFeedbackRequest request)
{
var response = await _feedbackService.SendFeedbackAsync(request);
return Ok(response);
}
Où j'envoie ceci en tant que corps de message au contrôleur:
{
message: "Test"
type: "comment"
}
Et je reçois maintenant l'erreur suivante sur ce point de terminaison:
The JSON value could not be converted to MyApp.Feedback.Enums.FeedbackType. Path: $.type | LineNumber: 0 | BytePositionInLine: 13."
Cela fonctionnait dans 2.2 et a commencé l'erreur dans 3.0. J'ai vu parler du changement de sérialiseur json en 3.0, mais je ne sais pas comment cela devrait être géré.