我正在构建一个MVC 4.0 WEB API应用程序,并希望使用以下路由:
/api/{appId}/{controller}/{id1}/{action}/{id2}
我想使用appId
参数并使用它在HttpContext.Current.Items
集合中设置一个值,并希望它不在Action匹配过程中。我当然不想为我的控制器中的每个操作方法添加appId
参数。
有没有人知道如何实现这一目标?
答案 0 :(得分:3)
您不需要将appId作为参数包含在内; Web API将路由到与路径参数的最佳子集匹配的操作。因此,如果没有动作具有appId参数,则它将匹配id1,id2和动作名称(来自{action})。
如果要在控制器操作中获取appId的值,可以从ControllerContext.RouteData.Values字典中获取路径值。 (不确定这是不是你的情况。你是否特别需要将它存储在HttpContext.Current.Items中?)
本文详细介绍了操作选择:http://www.asp.net/web-api/overview/web-api-routing-and-actions/routing-and-action-selection