我是新来的ASP.NET Web API,但我遇到了一个问题,如果我试图将两个get方法添加到单个控制器它尝试获取操作失败。我们是否只允许每个控制器获取一个,除非我们正在添加相同方法的重载?ASP.NET Web API操作 - 每个控制器只有一个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',所以它只是待定,然后它就可以工作。
只要有两个get方法我得到这个错误:
{“消息”:“发生错误”,“ExceptionMessage”:“找到了多个行动相匹配的要求,即:\ r \ SystemString 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 at System.Web.Http.Controllers.ApiControllerActionSelector.SelectAction(HttpControllerContext controllerContext)\ r \ n at System.Web.Http.ApiController.ExecuteAsync( HttpControllerContext controllerContext,Cancell ationToken cancellationToken)\ r \ n在System.Web.Http.Dispatcher.HttpControllerDispatcher.SendAsync(HttpRequestMessage请求,CancellationToken cancellationToken)上的System.Web.Http.Dispatcher.HttpControllerDispatcher.SendAsyncInternal(HttpRequestMessage请求,CancellationToken cancellationToken)\ r \ n“ }
您可以根据需要进行多项操作。你可以发布代码吗? – jchapa 2013-03-08 20:43:53
你可以显示你正在尝试的操作吗?您只能拥有一个具有相同方法签名的GET,但具有各种名称或签名(以及指向它们的路由)的任何数量的操作 – 2013-03-08 20:44:20
请张贴一些代码来显示您的控制器操作和您的路由配置 – levelnis 2013-03-08 20:45:40