Rest 如何获取ASP.NET Web API 2中自定义RouteTemplate属性的值?

Rest 如何获取ASP.NET Web API 2中自定义RouteTemplate属性的值?,rest,asp.net-web-api2,asp.net-web-api-routing,Rest,Asp.net Web Api2,Asp.net Web Api Routing,我想创建一个自定义路由配置,如下所示: config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{location}/{id}", defaults: new { id = RouteParameter.Optional } 我需要有一个location属性,该属性将包含一个表示特定API用户位置的整数id 之后,我将在控制器级别放置一个自定义属性,类似于: [Ve

我想创建一个自定义路由配置,如下所示:

config.Routes.MapHttpRoute(
    name: "DefaultApi",
    routeTemplate: "api/{controller}/{location}/{id}",
    defaults: new { id = RouteParameter.Optional }
我需要有一个
location
属性,该属性将包含一个表示特定API用户位置的整数id

之后,我将在控制器级别放置一个自定义属性,类似于:

[VerifyLocation]
public class SomeController : ApiController
它对传递给每个端点的位置值进行一些后台验证。这意味着我需要能够获得
location
属性的整数值

我知道你可以使用
Route
属性来定制你的路线,但问题是你想这样做,而不必在我的所有端点上加入
[Route(“api/{location:id}/{id:int”}]

我该怎么做呢?

(以防有人偶然发现这个问题)

一种方法是通过
ActionFilterAttribute

public class VerifyLocation : ActionFilterAttribute
{
    public override void OnActionExecuting(HttpActionContext actionContext)
    {
        var routeData = actionContext.RequestContext.RouteData;

        var location = routeData.Values["location"];

        // Do your thing here

        base.OnActionExecuting(actionContext);
    }
}