質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

IIS

IIS(Internet Information Services)はマイクロソフト社によって開発されたwebサーバーです。Windows上で動作します。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

Q&A

解決済

2回答

9147閲覧

ASP.NET WebAPIアプリを複数IISに配置し、URLパラメータによって呼出先のアプリを変えたい

Rocky

総合スコア261

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

IIS

IIS(Internet Information Services)はマイクロソフト社によって開発されたwebサーバーです。Windows上で動作します。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

0グッド

1クリップ

投稿2018/03/15 00:56

編集2018/03/15 01:40

前提・実現したいこと

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/

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

一つの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にアクセス出来るはずです。

✕:ご教授
◯:ご教示

投稿2018/03/15 01:57

編集2018/03/15 01:59
ShikaTech

総合スコア468

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Rocky

2018/03/15 02:09

IISの基本設計について理解が足りず、ご面倒をおかけしました。 仮想ディレクトリというワードについてよく調べてみます。 また具体的な実装方法と図まで"ご教示"いただき、誠にありがとうございました。 1つのゴールを示していただいたことはIISという未開の地へ旅立つ私にとって大変助かりました。
退会済みユーザー

退会済みユーザー

2018/03/15 03:06

IIS 上で ASP.NET Web アプリが動作する環境は、今は「仮想ディレクトリ」とは呼ばずに「アプリケーション」と呼んでます。
guest

0

複数の ASP.NET Web アプリを一つの IIS にデプロイすると言うのは普通に & 常識的に行われていることです。

複数の Web アプリに複数の Web API が含まれていても同じです。

何が質問者さんの問題・課題なのかわかりません。その辺りを詳しく書いてください。

その際は、アプリの開発環境と、運用環境をできるだけ詳しく書いてください。

投稿2018/03/15 01:25

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Rocky

2018/03/15 01:42

早速のご回答、ありがとうございます。 私の認識の及ぶ範囲で書き直しました。さらにわかりづらい点があればご指摘いただければと存じます。
退会済みユーザー

退会済みユーザー

2018/03/15 03:09

ShikaTech さんのレスに「ベストアンサー」を付けられてますが、解決済でもう情報は不要と言うことで良いですか?
Rocky

2018/03/15 04:14

本件については早々のレスをありがとうございました。 早速検証作業にはいっており、実装中なので厳密には解決ではありませんが、 必要な情報、概念はShikaTechさんからいただけたのではないかと思っています。 過不足や補足がありましたら他の初学者のためにもコメントいただけますと幸いです。
退会済みユーザー

退会済みユーザー

2018/03/15 05:46

不明点を明確にしてもらえないと回答はもちろんコメントも難しいです。何が分からないか、どういう情報が必要かを明確にしてもらえればできる範囲で回答します。
Rocky

2018/03/15 05:59

ご丁寧にありがとうございました。 では、現在トピックスを立てた時点での疑問点は解消しましたので、一旦クローズとさせてください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問