質問: ### 前提・実現したいこと ASP.NET WebAPIアプリを作成していますが、クライアント環境のバージョンが複数想定され 1つのWebAPIプログラムの中でバージョン管理をして挙動を変えるのではなく バージョンごとのプログラム(=ソリューション)を作成して、常に複数動作させたいと考えています。 具体的には、WebAPI "A-v1.0" と WebAPI "A-v2.0" を別々のソフトウェア、ソリューションとして作成して 外部公開しないwindowsサーバーのIIS状に2つを同時に配置・実行する。 URLを叩くとき、例えば"http://[固定ドメイン]/api/v1.0/aaa" と叩けば"A-v1.0"のaaaメソッドが呼び出される("A-v2.0"プログラムは動作に関与しない)といった具合を想定しています。 "A-v1.0"プログラムでのルーティング動作を規定すればhttp://[固定ドメイン]/api/v1.0/以降のパラメータによって挙動を制御できることは確認できましたが、 URLリクエストがhttp://[固定ドメイン]/api/v1.0/なのかhttp://[固定ドメイン]/api/v2.0/なのかによって、呼び出すプログラムそのものを変更したい場合は、どの設定を変更すればよいのでしょうか。あるいはどの分野?システム?について勉強すればよいのでしょうか。 ASP.netで作成しているWebAPIのソリューション単位では管理できないことではないかと考えています。 ※単一のwebAPIプログラムにおけるバージョン管理については、下記などを見て解決しています。名前空間で挙動が変えられるのですね。 https://blogs.msdn.microsoft.com/webdev/2013/03/07/asp-net-web-api-using-namespaces-to-version-web-apis/
回答: 一つのAPIの中でクライアント別のAPIを両立するのではなく、 クライアント別に独立して作るAPIを一つのIISに配置したいってことでよいですかね? 普通に**仮想ディレクトリ**を切ればいいんではないでしょうか。 ``` IIS-ROOT └ API ├ API1 │ └ ForClientA └ API2 └ ForClientB ``` 便宜的に`API`という名前の空アプリケーションを切り、(これはIISのROOTでもいいと思います) ClientA用のAPI1を仮想ディレクトリ作って配置、 同じくClientBをAPI2に配置。 これでアプリケーションルートのURLは同じで、`https://domain/API/API1`とアクセスすればForClientAのWEBアプリケーションへルーティング出来ますし、末尾セグメントを変えればBにアクセス出来るはずです。 ✕:ご教授 ◯:ご教示