【发布时间】:2017-03-18 16:36:56
【问题描述】:
我有一个自己编写并发布的 ASP.NET Web API。现在我们正在考虑进行一些改进,这些改进涉及对某些调用的更改,这意味着我们需要进行版本控制以保持现有客户端正常工作。
到目前为止,我在我的应用程序中使用了属性路由。方法被调用:Controller/Action via RoutePrefix 和 Route 属性。
当我确实需要创建我的类的 V2 时,我只想重新创建实际更改的类,并将其他路由重定向回 v1 类,因为它们没有更改。 (否则我最终会得到很多样板代码或重复代码)。
我想做的是让以下路线适用于我的 v1 版本的课程: 控制器/动作
对于 V2,我希望将任何新类转到 V2,并且任何未更改的类我想从 V1 类返回 HttpControllerDescriptor。路由看起来像 v2/Controller/Action,但会被重定向到 Controller/Action。
我已经实现了一个 IHttpControllerSelector 并返回了适当的 HttpControllerDescriptors 但它没有调用该方法。我相信这是因为路由信息与操作不匹配。 (当我放入 IHttpActionSelector 并跟踪异常时,它说“找到了与请求匹配的多个操作)。
所以,我想我想知道:这甚至可能吗?这是实现我想要做的最好的方式吗?
【问题讨论】:
-
这可能会对您有所帮助 :culbertsonexchange.com/wp/?p=318 。如果您想实现您在问题中提到的内容,则必须为属性路由实现自己的自定义逻辑。
标签: rest asp.net-web-api url-routing api-versioning