我是 ASP.NET Web API 的新手,但我遇到了一个问题,如果我尝试将两个 get 方法添加到单个控制器,则无法尝试获取操作。除非我们添加相同方法的重载,否则我们是否允许每个控制器只获取一次?
如果我只有一个 get 方法,例如第一个方法,则此方法有效。一旦我将 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”,使其只是待处理,那么它就可以工作。
只要有两种获取方法,我就会收到此错误:
{"Message":"发生错误。","ExceptionMessage":"找到与请求匹配的多个操作:\r\nSystem.String TodaysTasks() on type TaskTrackerService.Controllers.TasksController\r\nSystem.String PendingTasks () 类型 TaskTrackerService.Controllers.TasksController","ExceptionType":"System.InvalidOperationException","StackTrace":" 在 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(HttpControllerContext controllerContext, CancellationToken cancelToken)\r\n 在 System.Web.Http.Dispatcher。HttpControllerDispatcher.SendAsyncInternal(HttpRequestMessage request, CancellationToken cancelToken)\r\n 在 System.Web.Http.Dispatcher.HttpControllerDispatcher.SendAsync(HttpRequestMessage request, CancellationToken cancelToken)"}