2017-09-12 7 views
-1

Je suis en train de créer ASP.NET Core Web API. Je Post/méthode Obtenir comme ci-dessous:Post méthode ne fonctionne pas dans ASP.NET Core

[HttpGet] 
    [Route("api/getProffessionByID/{id}")] 
    public IHttpActionResult getProffessionByID(Int64 id) 
    { 
     AllProffession model = new AllProffession(); 
     try 
     { 
      var result = model.GetAllProffession.Where(i => i.id == id).FirstOrDefault(); 
      return Ok(result); 
     } 
     catch (Exception ex) 
     { 
      return InternalServerError("Something Went Wrong : " + ex.ToString()); 
     } 
    } 

    [HttpPost] 
    [Route("api/savePerson")] 
    private IHttpActionResult savePerson(PersonModel model) 
    { 
     try 
     { 
      if (model.name != string.Empty || model.weight != 0 || model.height != 0 || model.proffession != 0) 
      { 
       Guid guid = Guid.NewGuid(); 
       Random random = new Random(); 
       int i = random.Next(); 
       model.id = i; 
       return Ok(model); 
      } 
      else 
      { 
       return BadRequest(); 
      } 
     } 
     catch (Exception ex) 
     { 
      return InternalServerError("Something Went Wrong : " + ex.ToString()); 
     } 
    } 

Ma méthode get fonctionne tout va bien d'URL, ainsi que Postman. enter image description here

J'ai essayé [FromBody] De plus, mais il est aussi ne fonctionne pas

Modèle:

public class PersonModel 
    { 
     public int id { get; set; } 
     public string name { get; set; } 
     public int weight { get; set; } 
     public int height { get; set; } 
     public int proffession { get; set; } 
    } 

WebApiConfig.cs

public static void Register(HttpConfiguration config) 
     { 
      // Web API configuration and services 

      // Web API routes 
      config.MapHttpAttributeRoutes(); 

      config.Routes.MapHttpRoute(
       name: "DefaultApi", 
       routeTemplate: "api/{controller}/{id}", 
       defaults: new { Controllers = "API", id = RouteParameter.Optional } 
      ); 

      config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/html")); 
     } 
+0

Comment ressemble votre PersonModel? – jhen

+0

Si j'utilise FromBody dans la méthode post, je reçois la même erreur que j'ai montré dans Screenshot –

+0

est 'Controllers' correct? ou devrait-il être 'controller' dans votre config d'itinéraire – JamieD77

Répondre

5

Peut-être vous devriez changer votre méthode pour public au lieu de privé.

[HttpPost] 
[Route("api/savePerson")] 
public IHttpActionResult savePerson(PersonModel model) { 
    //... 
} 
+0

Il était stupide de déclarer la méthode comme privée. Je n'ai pas remarqué que j'ai écrit une méthode privée. Merci pour l'aide. Aussi, merci Niladri et Nkosi de me relater que je vais mal. Je commencerais à apprendre l'api de noyau d'ASP.NET de commencer. –