IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

Services Web Discussion :

Web API Asp.Net JSON Erreur 500


Sujet :

Services Web

  1. #1
    Membre �clair� Avatar de lucienkany
    Profil pro
    D�veloppeur
    Inscrit en
    Janvier 2004
    Messages
    257
    D�tails du profil
    Informations personnelles :
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activit� : D�veloppeur

    Informations forums :
    Inscription : Janvier 2004
    Messages : 257
    Par d�faut Web API Asp.Net JSON Erreur 500
    Bonjour � tous.
    Voici mon probl�me.

    J'ai cr�e une Web API Asp.Net qui permet d'enregistrer des donn�es dans deux tables sql server. (tables Prelevement, DetailsPrelevement)
    voici les models
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
     
    /// Prelevement
    namespace LIMS24092022.Models
    {
        public partial class Prelevement
        {
            public Prelevement()
            {
                DetailsPrelevements = new HashSet<DetailsPrelevement>();
            }
     
            public int Id { get; set; }
            public DateTime DatePrelevement { get; set; }
            public DateTime? HeureDebPrelevement { get; set; }
            public DateTime? HeureFinPrelevement { get; set; }
            public DateTime? HeureSortie { get; set; }
            public int? EquipementPrelevId { get; set; }
            public int? SiteclientId { get; set; }
            public int? EchneurId { get; set; }
            public int? NbreLot { get; set; }
            public DateTime? DateConstitution { get; set; }
            public DateTime? HeureDebConstitution { get; set; }
            public DateTime? HeureFinConstitution { get; set; }
            public DateTime? DateTamisage { get; set; }
            public DateTime? HeureDebTamisage { get; set; }
            public DateTime? HeureFinTamisage { get; set; }
            public DateTime? DateQuartage { get; set; }
            public DateTime? HeureDebQuartage { get; set; }
            public DateTime? HeureFinQuartage { get; set; }
            public int? EquipementCartageId { get; set; }
            public DateTime? DateQuadrillage { get; set; }
            public DateTime? HeureDebQuadrillage { get; set; }
            public DateTime? HeureFinQuadrillage { get; set; }
            public int? EquipementQuadrillageId { get; set; }
            public DateTime? DateConditionnement { get; set; }
            public DateTime? HeureDebConditionnement { get; set; }
            public DateTime? HeureFinConditionnement { get; set; }
            public int? EmballageId { get; set; }
            public int? ExpedId { get; set; }
            public int? PorteurId { get; set; }
            public int? TransportId { get; set; }
            public int? MatiereId { get; set; }
            public string Description { get; set; }
            public string Elements { get; set; }
            public int? ClientId { get; set; }
            public int? LotId { get; set; }
            public DateTime? DateExp { get; set; }
            public DateTime? Servertime { get; set; }
            public int? CreatedBy { get; set; }
            public DateTime? CreatedOn { get; set; }
            public int? UpdatedBy { get; set; }
            public DateTime? UpdatedOn { get; set; }
            public int? LaboId { get; set; }
            public int? TypedocId { get; set; }
            public int? Oldid { get; set; }
            public string Workorder { get; set; }
     
            public virtual Client Client { get; set; }
            public virtual Labo Labo { get; set; }
            public virtual ICollection<DetailsPrelevement> DetailsPrelevements { get; set; }
        }
    }
    DetailsPrelevement

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    ///Details prelevement
    namespace LIMS24092022.Models
    {
        public partial class DetailsPrelevement
        {
            public DetailsPrelevement()
            {
                Ehcantillons = new HashSet<Ehcantillon>();
            }
     
            public int Id { get; set; }
            public int Idprelevement { get; set; }
            public string Refclient { get; set; }
            public int? CpId { get; set; }
            public double? QuantitePrelevee { get; set; }
            public double? PoidsSsm { get; set; }
            public double? PoidsClient { get; set; }
            public double? PoidsOcc { get; set; }
            public double? PoidsCeec { get; set; }
            public string ListeElements { get; set; }
            public DateTime? CreatedOn { get; set; }
            public int? CreatedBy { get; set; }
            public DateTime? UpdatedOn { get; set; }
            public int? UpdateBy { get; set; }
            public DateTime? TimeInserted { get; set; }
            public int? LaboId { get; set; }
            public int? Iddemande { get; set; }
            public int? Oldidprelevement { get; set; }
     
            public virtual Prelevement IdprelevementNavigation { get; set; }
            public virtual ICollection<Ehcantillon> Ehcantillons { get; set; }
        }
    }

    et le controller prelevement

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
     
    namespace LIMS24092022.Controllers
    {
        [Route("api/[controller]")]
        [ApiController]
        public class PrelevementsController : ControllerBase
        {
            private readonly APIContext _context;
     
            public PrelevementsController(APIContext context)
            {
                _context = context;
            }
     
            // GET: 
            [HttpGet]
            public async Task<ActionResult<IEnumerable<Prelevement>>> GetPrelevements()
            {
                return await _context.Prelevements.ToListAsync();
            }
     
            // GET: 
            [HttpGet("{id}")]
            public async Task<ActionResult<Prelevement>> GetPrelevement(int id)
            {
                var prelevement = await _context.Prelevements.FindAsync(id);
     
                if (prelevement == null)
                {
                    return NotFound();
                }
     
                return prelevement;
            }
     
            // PUT: 
            // To protect from overposting attacks, see https://go.microsoft.com/fwlink/?linkid=2123754
            [HttpPut("{id}")]
            public async Task<IActionResult> PutPrelevement(int id, Prelevement prelevement)
            {
                if (id != prelevement.Id)
                {
                    return BadRequest();
                }
     
                _context.Entry(prelevement).State = EntityState.Modified;
     
                try
                {
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!PrelevementExists(id))
                    {
                        return NotFound();
                    }
                    else
                    {
                        throw;
                    }
                }
     
                return NoContent();
            }
     
            // POST: 
            // To protect from overposting attacks, see https://go.microsoft.com/fwlink/?linkid=2123754
            [HttpPost]
            public async Task<ActionResult<Prelevement>> PostPrelevement(Prelevement prelevement)
            {
                _context.Prelevements.Add(prelevement);
                await _context.SaveChangesAsync();
     
                return CreatedAtAction("GetPrelevement", new { id = prelevement.Id }, prelevement);
            }
     
            // DELETE: 
            [HttpDelete("{id}")]
            public async Task<IActionResult> DeletePrelevement(int id)
            {
                var prelevement = await _context.Prelevements.FindAsync(id);
                if (prelevement == null)
                {
                    return NotFound();
                }
     
                _context.Prelevements.Remove(prelevement);
                await _context.SaveChangesAsync();
     
                return NoContent();
            }
     
            private bool PrelevementExists(int id)
            {
                return _context.Prelevements.Any(e => e.Id == id);
            }
        }
    }

    Pendant les tests, avec Postman tout fonctionne bien, je peux enregistrer un pr�levement avec plusieurs d�tails en une seule fois.

    Mais en production, je peux enregistrer un pr�levement avec TROIS d�tails seulement.
    l'API revoie une erreur 500 lorsque j'essaie d'enregistrer un pr�levement avec PLUS DE TROIS DETAILS PRELEVEMENT.

    Je n'arrive pas � d�terminer le probl�me pour corriger.

    Pourriez-vous s'il vous plait m'aider.

    D'avance merci beaucoup.

  2. #2
    Expert confirm�
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 988
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rh�ne (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : Analyste programmeur Delphi / C#
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 988
    Par d�faut
    Une erreur 500 survient lorsqu'une exception est lev�e dans ton code.
    Il peut y avoir tout un tas de raison pour laquelle cette exception est lev�e.

    Par rapport � ce que tu pr�sentes j'opterai pour l'une de ce deux raisons :
    - Un objet nul
    - Un duplicate key dans la base
    - contraintes d'int�grit�s non respect�es (notamment sur TypedocId et autre Id o� aucune table n'est branch�e)

    Mais le meilleur moyen de v�rifier ce qui se passe est de trapper et logger l'exception.

Discussions similaires

  1. Cr�er la documentation des Web API ASP.NET Core avec Swagger
    Par Hinault Romaric dans le forum D�veloppement Web avec .NET
    R�ponses: 2
    Dernier message: 27/10/2020, 16h44
  2. Web API Asp.Net JSON complexe
    Par thorgal1612 dans le forum Services Web
    R�ponses: 1
    Dernier message: 05/04/2019, 16h42
  3. Erreur avec: Menu <Site Web> <Configuration ASP.NET>
    Par PiPo123 dans le forum Visual Studio
    R�ponses: 3
    Dernier message: 23/06/2011, 01h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo