MapRoutes不起作用
本文关键字:不起作用 MapRoutes | 更新日期: 2023-09-27 18:23:43
我看不出这里出了什么问题。我上面有更具体的路线,但它只返回错误404-未找到。
执行/api/playernames/competitions有效,但/api/playename/steams/competitiond/81bbd23d-54a-40204-a771-85c48555a992无效。我做错了什么?
routes.MapRoute("PlayerNamesDbTeams", "playernames/teams/competitionid/{competitionId}",
new { controller = "playernames", action = "Teams", competitionId = "" });
routes.MapRoute("default", "{controller}/{action}/{id}",
new { controller = "playernames", action = "Competitions" });
public class PlayerNamesController : ApiController
{
[HttpGet]
public List<Competition> Competitions()
{
using (var service = new AggregatorClient())
{
return service.GetCompetitions();
}
}
[HttpGet]
public List<Team> Teams(string competitionId)
{
using (var service = new AggregatorClient())
{
return service.GetTeams(competitionId);
}
}
}
发出类似/api/playernames/teams的请求?competitionId=xxxxxx确实有效。
您似乎在使用MVC路由;如果你使用的是ApiControllers,你真的应该使用WebApiConfig来定义你的路由。
打开App_Start
文件夹中的WebApiConfig.cs
,并按如下方式定义路线:
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
config.Routes.MapHttpRoute(
name: "PlayerNamesDbTeams",
routeTemplate: "api/{controller}/{action}/competitionid/{competitionId}",
defaults: new { competitionId = "" }
);