繁体   English   中英

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

[英]Web api routing - default actions with custom actions mapped twice

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

为什么不通过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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM