我在WebApiConfig中映射了以下路由:
config.Routes.MapHttpRoute(name: "WithActionApi", routeTemplate: "api/{controller}/{action}/{id}");
config.Routes.MapHttpRoute(name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { action = "DefaultAction", id = RouteParameter.Optional });
在我的控制器中我有:
[HttpGet]
public ProspectAddressResult Addresses(int id)
{
...
return result;
}
[ActionName("DefaultAction")]
public ProspectDetail Get(int id)
{
...
return prospect;
}
我发现我将Get路由映射两次作为api / prospect / 1和api / prospect / Get / 1。我做错了什么,因为我希望路线只被映射一次,即api / prospect / 1或者那是不可能的(或相关的)?
答案 0 :(得分:2)
为什么不通过nuget安装web api 2。然后,您可以使用操作/控制器上的Route和RoutePrefix属性来指定路径。
然后你应该永远不会得到重复的映射
以下是如何设置api控制器的示例:
[RoutePrefix("api/prospect")]
public class ProspectController: ApiController
{
[Route("{id}")]
public ProspectDetail Get(int id)
{
...
return prospect;
}
}
您的路线将是api / prospect / 1