Asp.NET Web Api 2路由参数

时间:2016-08-29 08:25:41

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

我有以下路线:

 config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{service_name}/{controller}/{id}",
                defaults: new { service_name = "identity", id = RouteParameter.Optional }
            );

我希望此路由仅适用于以下模式(服务名称应始终为标识):

api/identity/{anyController}/{id}

现在我可以通过简单地将路线模板更改为

来实现这一目标
routeTemplate: "api/identity/{controller}/{id}",

然后我将无法阅读" service_name"来自Request.GetRouteData();,因为它没有命名参数。

是否有更简单的方法来执行此操作,而不是创建一个ActionFilter,它将过滤所有服务名称不是" Identity"在这种情况下。

1 个答案:

答案 0 :(得分:2)

您可以在受影响的方法上方添加Route属性。例如,

[Route("api/identity/{controller}/{id}", Order = 1)]
[HttpGet]
public IHttpActionResult DoSomethingHere(int id)
{
    // Do some magic here
}

查看这篇文章Attribute Routing in ASP.NET Web API 2