Post Method在ASP.NET Core中不工作

问题描述:

我正在尝试创建ASP.NET Core Web API。我有邮政/获取方法,按照以下:Post Method在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()); 
     } 
    } 

我GET方法从工作URL以及邮差无一不精。 enter image description here

我已经试过[FromBody]为好,但它也没有工作

型号:

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

您的PersonModel的外观如何? – jhen

+0

如果我在Post方法中使用FromBody,我得到了同样的错误,我在截图 –

+0

中显示的是'Controllers'是否正确?或者它应该是你的路由配置中的'controller' – JamieD77

也许您应该将您的方法更改为public而不是private

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

将方法声明为私有是愚蠢的。我没有注意到我写了私人方法。感谢帮助。 另外,非常感谢Niladri和Nkosi让我觉得我的方向是错误的。我将开始学习ASP.NET核心api。 –