我正在使用 MVC4 开发一个 Web API,我想让它向后兼容,因为我无法控制客户端何时更新。
为此,我将在不同的命名空间上创建控制器,例如 MyApp.Controllers.v1_0.AccountsController 和 MyApp.Controllers.v1_1.AccountsController
显然,当我创建它们并尝试访问一个操作时,我得到“找到与名为'Accounts'的控制器匹配的多种类型”
然后,我试图做的是编写我自己的 IHttpControllerActivator,这样当调用 Create 时,它会返回其中一个......但这不起作用 b/c 它永远不会被击中,这在 Create 接收系统时是有意义的.Web.Http.Controllers.HttpControllerDescriptor 包含有关它将使用的控制器的信息。
此外,我不能只是将控制器命名为不同的(Accounts1_0Controller、Accounts1_1Controller),因为当激活器返回 Accounts1_0Controller 时,它会说它的名称不是“Accounts”......它的名称可能是 Accounts1_0。
你有没有看到任何一种方式:
- 从 url 设置命名空间?这样我就有了 url /v1_0/SomeAction 或 /v1_1/SomeAction 并在适当的命名空间中搜索控制器
- 有多个具有相同 MVC 名称但类名不同的控制器?
希望问题足够清楚。
谢谢!