私は MVC4 を使用して Web API に取り組んでおり、クライアントがいつ更新されるかを制御できないため、下位互換性を持たせたいと考えています。
そのために、MyApp.Controllers.v1_0.AccountsController や MyApp.Controllers.v1_1.AccountsController など、さまざまな名前空間にコントローラーを作成します。
明らかに、両方を作成してアクションにアクセスしようとすると、「「アカウント」という名前のコントローラーに一致する複数のタイプが見つかりました」というメッセージが表示されます
次に、私がやろうとしたのは、Create が呼び出されたときにそれらの 1 つを返すように、独自の IHttpControllerActivator を作成することです...しかし、それは機能しません。使用しようとしているコントローラーに関する情報を含む .Web.Http.Controllers.HttpControllerDescriptor。
また、アクティベーターが Accounts1_0Controller を返すと、その名前は「Accounts」ではないと表示されるため、コントローラーに別の名前 (Accounts1_0Controller、Accounts1_1Controller) を付けることはできません。おそらく、Accounts1_0 という名前になります。
次のいずれかの方法がありますか。
- URL から名前空間を設定しますか? URL /v1_0/SomeAction または /v1_1/SomeAction を取得し、適切な名前空間でコントローラーを検索するようにします
- 同じ MVC 名でクラス名が異なる複数のコントローラーがありますか?
問題が十分に明確であることを願っています。
ありがとう!