【发布时间】:2018-09-04 18:37:10
【问题描述】:
所以我在两个不同的控制器中有 GET 方法,它们似乎不能同时工作。我的路线配置如下所示:
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
// Configure Web API to use only bearer token authentication.
config.SuppressDefaultHostAuthentication();
config.Filters.Add(new HostAuthenticationFilter(OAuthDefaults.AuthenticationType));
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
config.Routes.MapHttpRoute(
name: "GetGroupsFromSection",
routeTemplate: "api/{controller}/{action}/{sectionId}"
);
config.Routes.MapHttpRoute(
name: "ReturnCountForGroup",
routeTemplate: "api/{controller}/{action}/{groupIdCount}"
);
}
使用此配置,第一条路线(GetGroupsFromSection)有效,但另一条路线无效。如果我将它们切换为第一个 ReturnCountForGroup,那么一个有效,另一个无效。
这是方法
在 GroupController 中:
[HttpGet]
public IEnumerable<Group> GetGroupsFromSection(int sectionId)
{
var allGroups = groupRepository.SearchFor(s => s.SectionId == sectionId).ToList();
return (IEnumerable<Group>)allGroups;
}
这是来自 ActivationCode 控制器的另一个:
[HttpGet]
public int ReturnCountForGroup(int groupIdCount)
{
var count = dataContext.ActivationCode.Count(c => c.GroupId == groupIdCount);
return count;
}
GetGroupsFromSection 获得 200 成功。但是 ReturnCountForGroup 收到此错误消息:
“MessageDetail”:“在控制器‘ActivationCode’上找不到与请求匹配的操作。”
【问题讨论】:
标签: c# asp.net-web-api asp.net-web-api-routing