0

J'ai écrit une API Web Asp.Net dans laquelle j'ai écrit put, post, get et delete pour effectuer des tâches crues dans la base de données Sql azure. La base de données et l'API sont en ligne sur Microsoft Azure. Je suis capable d'appeler GET controller et d'extraire des données dans un navigateur. Lorsque j'essaie d'afficher des données codées en dur via une application de console, cela ne fait rien (ni donne d'erreur ni d'exception). Ci-dessous le contrôleur API Web:Impossible de publier des données dans l'API Web Asp.Net hébergée sur Microsoft Azure

public HttpResponseMessage Post([FromBody] Product prod) 
    { 
     try 
     { 
      se.Products.Add(prod); 
      se.SaveChanges(); 

      var message = Request.CreateResponse(HttpStatusCode.Created, prod); 
      message.Headers.Location = new Uri(Request.RequestUri + prod.Product_ID.ToString()); 
      return message; 
     } 
     catch (Exception ex) 
     { 
      return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex); 
     } 
    } 

Method from the client console app to send data is shown in this picture

J'ai essayé d'inspecter cette méthode en mettant un point d'arrêt à response.Response ai rien en lui, mais a montré une mauvaise demande.

Veuillez m'aider à bien publier les données dans la base de données via l'API web hébergée sur azure. Merci :)

+0

GermanCH, excellente idée. Ali, la première étape consiste à construire une requête pOST HTTP à l'aide. Postman ou Fiddler4 qui frappe avec succès votre terminal Si vous ne parvenez pas à le faire, s'il vous plaît aussi publiez votre classe de produit Une fois que vous avez construit une requête en utilisant l'un de ces outils, vous pouvez examiner la requête méthode d'appel est l'envoi et voir la différence. –

+0

Merci mon ami! Devrais-je envoyer une demande de post de fiddler à mon adresse actuelle d'API où elle hébergeait OU à l'hôte local ??? Je l'ai essayé pour localhost où cela fonctionne parfaitement bien et affiche des données dans la base de données locale. –

+0

J'ai essayé d'envoyer des données à l'adresse où l'API est hébergée, mais j'ai reçu la même réponse que de l'application client de la console, par exemple, Erreur: 400 Bad Request. –

Répondre

0

Vous obtenez une réponse de «demande incorrecte», ce qui signifie qu'il y a un problème avec les données que vous envoyez dans le corps de la demande. Vérifiez si tous les attributs non nullables sont envoyés.

De même, vérifiez la configuration de l'en-tête "Content-type" in this answer, qui peut causer des problèmes si les données envoyées sont correctes.

Je voudrais essayer d'utiliser un autre client REST, en tant que Postman, pour vérifier les besoins de la demande.

Désolé d'envoyer cela comme réponse, je voudrais simplement commenter mais je n'ai pas de privilèges :(

+0

J'ai essayé les deux choses ci-dessus, mais en vain :(Toute autre solution s'il vous plaît. –

0

Essayez de passer le paramètre comme jobject type de données à la méthode et cataloguée dans votre objet requis/classe. JSON. stringify le paramètre avant de l'envoyer au contrôleur

[HttpPost] 
     public HttpResponseMessage Post([FromBody] JObject prod) {...}