我正在开发一个带有MVC4的Web API,我想让它向后兼容,因为我无法控制何时更新客户端。
为了做到这一点,我将在不同的命名空间上创建控制器,例如MyApp.Controllers.v1_0.AccountsController和MyApp.Controllers.v1_1.AccountsController
显然,当我创建它们并尝试访问某个动作时,我会发现“找到了多个匹配名为'Accounts'的控制器的类型”
然后,我尝试做的是编写我自己的IHttpControllerActivator,这样当调用Create时,它会返回其中一个......但是这不起作用b / c它永远不会被击中,这就像创建一样接收一个System.Web.Http.Controllers.HttpControllerDescriptor,其中包含有关将要使用的控制器的信息。
另外,我不能只将控制器命名为不同的(Accounts1_0Controller,Accounts1_1Controller),就像激活器返回Accounts1_0Controller时一样,它说它的名字不是“Accounts”......它的名字可能是Accounts1_0。
你有没有看到任何一种方式:
希望问题很清楚。
谢谢!
答案 0 :(得分:0)
修正了它实现我自己的IHttpControllerSelector。微软如何制作MVC4开源,使它几乎无痛地看着他们的System.Web.Http.Dispatcher.DefaultHttpControllerSelector。