C# ASP.NET WEB API中的Url路由顺序
我在C# ASP.NET WEB API中的Url路由顺序,c#,asp.net-mvc-4,asp.net-web-api,C#,Asp.net Mvc 4,Asp.net Web Api,我在employeedetails控制器中有四种get方法,如下所示 1) 雇员() 2) 详细信息(id) 3) 团队信息(id) 4) 详细信息RTEAM(id)和控制器为: 我想这样的网址 1) api/Employees而不是url/employeedetails/Employee 后来 2) api/详细信息/id 3) api/TeamInfo/id 4) api/DetailsFortam/id 这是我的RouteConfig.cs配置 public static void Reg
employeedetails
控制器中有四种get方法,如下所示
1) 雇员()
2) 详细信息(id)
3) 团队信息(id)
4) 详细信息RTEAM(id)和控制器为:
我想这样的网址
1) api/Employees而不是url/employeedetails/Employee
后来
2) api/详细信息/id
3) api/TeamInfo/id
4) api/DetailsFortam/id
这是我的RouteConfig.cs
配置
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
routes.MapRoute(
name: "Employees",
url: "api/employeedetails/Employees",
defaults: new { controller = "EmployeeDetails", action = "Employees" }
);
routes.MapRoute(
name: "GetEmployeeDetailsById",
url: "api/employeedetails/Details/{id}",
defaults: new { controller = "EmployeeDetails", action = "Details", id = UrlParameter.Optional }
);
routes.MapRoute(
name: "GetTeamMember",
url: "api/employeedetails/TeamInfo/{id}",
defaults: new { controller = "EmployeeDetails", action = "TeamInfo", id = UrlParameter.Optional }
);
routes.MapRoute(
name: "GetTeamMemberById",
url: "api/employeedetails/DetailsForTeam/{id}",
defaults: new { controller = "EmployeeDetails", action = "DetailsForTeam",id = UrlParameter.Optional}
);
}
}
这是我的WebApiConfig.cs
public static void Register(HttpConfiguration config)
{
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
我应该更改什么?我建议使用属性路由。在web api配置中,添加:
config.MapHttpAttributeRoutes();
在控制器中:
[RoutePrefix("api")]
public class EmployeeDetailsController
你的行动是:
[HttpGet] // if you are calling via GET verb
[Route("Employees")]
public IHttpActionResult Employees()
{
}
[HttpGet] // if you are calling via GET verb
[Route("Details/{id}"]
public IHttpActionResult Details(int id)
{
}
[HttpGet] // if you are calling via GET verb
[Route("TeamInfo/{id}"]
public IHttpActionResult TeamInfo(int id)
{
}
[HttpGet] // if you are calling via GET verb
[Route("DetailsForTeam/{id}"]
public IHttpActionResult DetailsForTeam(int id)
{
}
将
默认路径
移动到末尾(顺序很重要)。然后将路由更改为url:“api/Employees”,
etcI同意@StephenMuecke,您应该将特定的路由放在顶部,将通用的路由放在底部。仍然会出现错误“没有找到与请求URI匹配的提供控制器名称的路由”@Mahek,你有员工控制器吗?@Mahek我想你把mvc路由和webapi路由搞混了。显示的第一个代码段用于配置mvc路由,第二个代码段用于web api。