У меня есть эти два контроллера Web Api, в настоящее время я вызываю метод контроллера, GetSingle
из приложения реакции
public IHttpActionResult GetAllData()
{
var modelitems = new List<TestModel>();
var items = AWEntity.GetProducts();
var i = 0;
foreach (var item in items)
{
var model = new TestModel
{
Id = item.ProductId,
TestName = item.Name,
TestMessage = "My Message" + i,
ReorderPoint = item.ReorderPoint
};
modelitems.Add(model);
i++;
}
return Ok(modelitems);
}
public IHttpActionResult GetSingle()
{
var item = AWEntity.GetProduct();
var model = new TestModel
{
Id = item.ProductId,
TestName = item.Name,
TestMessage = "My Message" + 1,
ReorderPoint = item.ReorderPoint
};
return Ok(model);
}
реаги fetch
выглядит так
fetch('http://localhost:51620/api/TestApi/GetSingle')
.then(result => result.json())
.then(result => {
this.setState({
items : result
}
)
})
и моя конфигурация маршрута WebApi выглядит так:
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
config.Routes.MapHttpRoute(
name: "API Default",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional });
Итак, моя проблема в том, что всякий раз, когда я вызываю метод GetSingle
, я получаю эту ошибку в консоли
{
"message": "An error has occurred.",
"exceptionMessage": "Multiple actions were found that match the request: \r\nGetData on type WebAPIComponent.Controllers.TestApiController\r\nGetSingle on type WebAPIComponent.Controllers.TestApiController",
"exceptionType": "System.InvalidOperationException",
"stackTrace": " at System.Web.Http.Controllers.ApiControllerActionSelector.ActionSelectorCacheItem.SelectAction(HttpControllerContext controllerContext)\r\n at System.Web.Http.Controllers.ApiControllerActionSelector.SelectAction(HttpControllerContext controllerContext)\r\n at System.Web.Http.ApiController.ExecuteAsync(HttpControllerContext controllerContext, CancellationToken cancellationToken)\r\n at System.Web.Http.Dispatcher.HttpControllerDispatcher.<SendAsync>d__1.MoveNext()"
}
Любая идея, в чем может быть причина, я попытался добавить другой маршрут по умолчанию, который включает в себя параметр действия, но это, кажется, не работает, и если возможно, я бы хотел избежать использования пользовательского атрибута маршрута
Спасибо большое