MVC 4 Web API - 复合键的路由

Luk*_*ett 9 asp.net-mvc asp.net-mvc-4

我正在努力找出支持以下简单方案所需的路由配置:

http..service/api/objects/key1/key2
Run Code Online (Sandbox Code Playgroud)

我觉得我已经尝试了一切.

最大的问题是,无论何时看起来我已经破解了它,我都会发现它

http..service/api/objects/key1 
Run Code Online (Sandbox Code Playgroud)

被路由到无参数IQueryable Get.

Luk*_*ett 4

我想我已经成功了。

routes.MapHttpRoute(
    name: IQueryableObjectsApiRouteName,
    routeTemplate: "api/objects",
    defaults: new { controller = "objects" }
);

routes.MapHttpRoute(
    name: ObjectsApiRouteName,
    routeTemplate: "api/objects/{siteId}/{assetId}",
    defaults: new { controller = "objects", siteId = "", assetId = "" }
);
Run Code Online (Sandbox Code Playgroud)

我需要使用复合键设置到每个控制器的两条显式路由。键的默认值是“”,我在控制器中检测到它并抛出我自己的 404。

这个对我有用。我现在可以去吃午饭了。