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());
}
}
我已经试过[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"));
}
答
也许您应该将您的方法更改为public而不是private。
[HttpPost]
[Route("api/savePerson")]
public IHttpActionResult savePerson(PersonModel model) {
//...
}
+0
将方法声明为私有是愚蠢的。我没有注意到我写了私人方法。感谢帮助。 另外,非常感谢Niladri和Nkosi让我觉得我的方向是错误的。我将开始学习ASP.NET核心api。 –
您的PersonModel的外观如何? – jhen
如果我在Post方法中使用FromBody,我得到了同样的错误,我在截图 –
中显示的是'Controllers'是否正确?或者它应该是你的路由配置中的'controller' – JamieD77