標準のasp.netコントローラに関連する同様の質問がありましたが、試してみましたが、apicontrollerで動作していないようです。ASP.NETでコントローラネームスペースへのAPIルートを制限する
Restrict route to controller namespace in ASP.NET Core
私は、URLを変更することなく、将来的には廃止されるためのAPIを可能にします。これを解決するために、ルートの最初にバージョン接頭辞を入れます。この方法では、このAPIとの統合を破ることなく、エンドポイントにいくつかの変更を加えることができます。
config.Routes.MapHttpRoute(
name: "V1 API",
routeTemplate: "v1/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
config.Routes.MapHttpRoute(
name: "V2 API",
routeTemplate: "v2/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
私は、同じコントローラ名を維持したいとほとんどの場合、すべてが正確に同じになり、レスポンスとリクエストボディは変更のみのものとなります。私は、コントローラーの名前空間にv1とv2を追加するために、コントローラーフォルダーにサブディレクトリーを追加しようとしましたが、同じ名前のコントローラーが2つあるというエラーが表示されます。
コントローラ内のクラスを検索するのではなく、コントローラのv1名前空間を指すようにルートを変更するにはどうすればよいですか。私はリビジョンの更新を可能な限りシームレスにしたいので、コントローラ名にバージョンを追加する必要はありません。
これを使って要求を正しいコントローラにルーティングできますか? –
バージョンごとに別々のコントローラを使用したい場合は、@TarekAboELkheirソリューションの投稿が有効です。私が見つけた唯一の問題は、v2 {ControllerName}がちょっと不器用に見えることです。 –