Две возможные проблемы здесь:
Маршрутизация
Я рекомендую вам использовать атрибутную маршрутизацию, а не зависеть от условной маршрутизации ( IMO, это может быть болезненно )
Включить маршрутизацию атрибутов в методе Register
в WebApiConfig.cs
config.MapHttpAttributeRoutes();
Затем настройте свой контроллер API и метод API с помощью атрибутов RoutePrefix
и Route
. Вместе RoutePrefix
+ Route
объединяются, чтобы построить ваш полный маршрут к вашему методу, в этом
пример api/PortalApi/GetExtenderGridData
[RoutePrefix("api/PortalApi")]
public class PortalApiController : ApiController
{
[Route("GetExtenderGridData")]
[HttpPost]
public IEnumerable<Order> FindOrdersByCustomer(int customerId) { ... }
}
Тело запроса
Ваш метод API FindOrdersByCustomer
принимает в качестве параметра одну строку, но ваш клиент пытается отправить объект методу, что в данный момент невозможно.
Клиентский объект определен как
{ gridFilterParams: gridFilterParams, securityCode: securityCode }
Чтобы иметь возможность отправить это на серверный API, необходимо убедиться, что он соответствует этой подписи.
Создайте класс, который отражает модель клиента (я не знаю, что такое gridFilterParams
, но вы понимаете, в чем дело)
public class RequestModel
{
public object GridFilterParams { get;set; }
public string SecurityCode { get; set; }
}
Затем прочитайте это из тела запроса в методе API
[RoutePrefix("api/PortalApi")]
public class PortalApiController : ApiController
{
[Route("GetExtenderGridData")]
[HttpPost]
public IEnumerable<Order> FindOrdersByCustomer([FromBody]RequestModel model) { ... }
}