Я новичок в веб-API ASP.NET, но я сталкиваюсь с проблемой, когда, если я пытаюсь добавить два метода получения к одному контроллеру, он не пытается выполнить действие. Допустим ли мы только один прием на контроллер, если мы не добавим перегрузку того же метода?Действия ASP.NET Web API - только один GET на контроллер?
Это работает, если у меня есть только один метод получения, например. первый. Как только я добавляю Получить ко второму имени метода, он дает мне 500.
[HttpGet]
public string GetToday()
{
return "Hello today";
}
[HttpGet]
public string GetPending()
{
return "Hello Pending";
}
звонков, которые я делаю: http://abc.com/api/tasks/gettoday http://abc.com/api/tasks/getpending
я могу сделать этот вызов, если имя метода просто «Сегодня», пока я помещаю атрибут [HttpGet]. Но только если у меня нет второго действия. Это означает, что если я удаляю атрибут [HttpGet] из второго метода, а также удаляю «Get» из имени метода, так что он просто Pending, то он работает.
Как только два метода получай я получаю эту ошибку:
{ «Сообщение»: «Ошибка», «ExceptionMessage»: "Несколько действий было обнаружено, что соответствует запросу: \ г \ nSystem.String TodaysTasks() для типа TaskTrackerService.Controllers.TasksController \ r \ nSystem.String PendingTasks() для типа TaskTrackerService.Controllers.TasksController "," ExceptionType ":" System.InvalidOperationException "," StackTrace ":" at System. Web.Http.Controllers.ApiControllerActionSelector.ActionSelectorCacheItem.SelectAction (HttpControllerContext controllerContext) \ r \ n в System.Web.Http.Controllers.ApiControllerActionSelector.SelectAction (HttpControllerContext controllerContext) \ r \ n в System.Web.Http.ApiController.ExecuteAsync (Контроллер HttpControllerContextContext, Cancell ationToken cancelationToken) \ r \ n в System.Web.Http.Dispatcher.HttpControllerDispatcher.SendAsyncInternal (запрос HttpRequestMessage, CancellationToken cancelationToken) \ r \ n в System.Web.Http.Dispatcher.HttpControllerDispatcher.SendAsync (запрос HttpRequestMessage, CancellationToken cancelationToken) " }
У вас может быть столько действий, сколько вы хотите. Можете ли вы отправить код? – jchapa
Можете ли вы показать, какие действия вы пытаетесь? У вас может быть только один GET с той же сигнатурой метода, но любое количество действий с различными именами или сигнатурами (и маршруты, указывающие на них) –
Пожалуйста, разместите код, показывающий действия вашего контроллера и вашу конфигурацию маршрута – levelnis