我有一个我编写并发布的 ASP.NET Web API。既然它在那里,我们正在考虑做一些改进,这些改进涉及对某些调用的更改,这意味着我们需要版本来保持现有客户端的工作。
到目前为止,我在我的应用程序中使用了属性路由。方法由以下方式调用:Controller/Action 通过 RoutePrefix 和 Route 属性。
当我确实需要创建我的类的 V2 时,我只想重新创建实际更改的类,并将其他路由重定向回 v1 类,因为它们没有更改。(否则我最终会得到很多样板代码或重复代码)。
我想要做的是让以下路线适用于我的 v1 版本的类:Controller/Action
对于 V2,我希望任何新类都转到 V2,而任何未更改的类我想从 V1 类返回 HttpControllerDescriptor。路由看起来像 v2/Controller/Action,但会被重定向到 Controller/Action。
我已经实现了一个 IHttpControllerSelector 并返回了适当的 HttpControllerDescriptors 但它没有调用该方法。我相信这是因为路由信息与操作不匹配。(当我放入 IHttpActionSelector 并跟踪异常时,它说“找到了与请求匹配的多个操作)。
所以,我想我想知道:这甚至可能吗?这是实现我想要做的最好的方法吗?