ASP. NET Core 3.0 Web API - метод контроллера не используется - PullRequest
1 голос
/ 26 марта 2020

Я новичок в ASP. NET Core Web API - это мой метод контроллера:

[HttpPost]
[Route("Createnewlead")]
public IActionResult LeadCreate([FromBody]CRM_Lead Lead)
{
    // do stuff
}

Это мой json:

{
   "RegionID": "1",
   "RunningNo": "1633",
   "CardName": "Google Pte Limited",
   "Telephone": "65748394",
   "Mobile": "89349859",
   "Fax": "47850555",
   "Email": "sre@hotmail.com",
   "ROC": "28IO45h44",
   "OwnerEmail": "huisan@syspex.com"
}

enter image description here

Пожалуйста, сообщите мне!

Ответы [ 3 ]

1 голос
/ 26 марта 2020

Обновите свой маршрут до

[Route("api/[Controller]/Createnewlead")]

Ваш маршрут в настоящее время настроен на [Route("Createnewlead")], что будет переводить на маршрут https://localhost:5001/createnewlead, но вы звоните https://localhost:5001/api/sap/createnewlead

или, наоборот, отправьте сообщение в

 localhost:5001/Createnewlead

В вашем примере вы устанавливаете маршрут для действия, вместо этого вы также можете установить маршрут для контроллера, например

[Route("api/[controller]/[action]")]
public class MyController: Controller 
{
}

или

[Route("[controller]/[action]")]
public class MyController: Controller 
{
}

или

[Route("[controller]")]
public class MyController: Controller 
{
}

Все зависит от того, как вы хотите, чтобы ваш маршрут выглядел

0 голосов
/ 26 марта 2020

Я мог бы воспроизвести вашу проблему (ошибка 400 и не попасть в контроллер) в asp. net web 3.0 api core 3.0, используя следующую модель (которая определяет RegionID как int вместо string):

public class CRM_Lead
{
    public int RegionID { get; set; }
    public string CardName { get; set; }
    //other properties
}

Это вызвано по умолчанию System.Text.Json в asp. net core 3.0.

Solution1: Измените свой пост json, чтобы удалить "" на свойствах, типы которых int

{
   "RegionID": 1,//instead of "1"
    ....
}

Solution2: Оставьте выше json и используйте старый Newtonsoft.Json в ASP. NET Проект Core 3.0, ссылаясь на Json. NET support .

1) Install-Package Microsoft.AspNetCore.Mvc.NewtonsoftJson -Version 3.0.0

2) Добавить services.AddControllers().AddNewtonsoftJson(); в startup.cs

0 голосов
/ 26 марта 2020

Проверьте атрибут маршрутизации Ur и URL почтальона / браузера, оба они совершенно разные

Ваш атрибут Route не имеет маршрута "api / sap / Createnewlead", он имеет только "Createnewlead".

Изменить url атрибут маршрутизации ur с нужным вам url

...