Web api路由 - 自定义操作映射两次的默认操作

时间:2014-06-30 11:40:49

标签: c# .net asp.net-web-api

我在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或者那是不可能的(或相关的)?

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