0

私は 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 という名前になります。

次のいずれかの方法がありますか。

  1. URL から名前空間を設定しますか? URL /v1_0/SomeAction または /v1_1/SomeAction を取得し、適切な名前空間でコントローラーを検索するようにします
  2. 同じ MVC 名でクラス名が異なる複数のコントローラーがありますか?

問題が十分に明確であることを願っています。

ありがとう!

4

1 に答える 1

0

独自の IHttpControllerSelector の実装を修正しました。Microsoft が MVC4 をオープン ソースにしたことは素晴らしいことです。

于 2012-09-16T23:05:41.850 に答える