我正在构建一个 MVC 4.0 WEB API 应用程序,并希望使用以下路线:
/api/{appId}/{controller}/{id1}/{action}/{id2}
我想使用该appId
参数并使用它在集合中设置一个值HttpContext.Current.Items
,并希望它退出 Action 匹配过程。我当然不想为appId
我的控制器中的每个操作方法添加参数。
有谁知道如何实现这一目标?
我正在构建一个 MVC 4.0 WEB API 应用程序,并希望使用以下路线:
/api/{appId}/{controller}/{id1}/{action}/{id2}
我想使用该appId
参数并使用它在集合中设置一个值HttpContext.Current.Items
,并希望它退出 Action 匹配过程。我当然不想为appId
我的控制器中的每个操作方法添加参数。
有谁知道如何实现这一目标?
您不需要包含 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