IIS に ASP.NET Core アプリを発行する
このチュートリアルでは、IIS サーバーで ASP.NET Core アプリをホストする方法を示します。
このチュートリアルでは、次の件について取り上げます。
- .NET Core ホスティング バンドルを Windows Server にインストールします。
- IIS サイトを IIS マネージャーで作成します。
- ASP.NET Core アプリを展開します。
必須コンポーネント
- 開発用のコンピューターにインストールされている .NET Core SDK。
- Web Server (IIS) サーバー ロールで構成された Windows Server。 IIS を使用して Web サイトをホストするようにサーバーが構成されていない場合は、「IIS を使用した Windows での ASP.NET Core のホスト」の "IIS 構成" に関するセクションのガイダンスに従ってから、このチュートリアルに戻ってください。
警告
IIS 構成と Web サイトのセキュリティには、このチュートリアルでは説明されていない概念が含まれています。 IIS で本稼働アプリをホストする前に、Microsoft IIS ドキュメントと IIS でホストする方法に関する ASP.NET Core 記事を参照してください。
このチュートリアルで取り上げられていない IIS ホスティングの重要なシナリオ:
- ASP.NET Core データ保護のためのレジストリ ハイブの作成
- アプリ プールのアクセス制御リスト (ACL) の構成
- IIS 配置の概念を集中的に取り上げるために、このチュートリアルでは、IIS で HTTPS セキュリティを構成せずにアプリを展開します。 HTTPS プロトコルに対して有効にするアプリをホストする方法については、この記事の「その他の技術情報」セクションのセキュリティ トピックをご覧ください。 ASP.NET Core アプリのホスティングに関する詳細なガイダンスについては、「IIS を使用した Windows での ASP.NET Core のホスト」を参照してください。
.NET Core ホスティング バンドルのインストール
.NET Core ホスティング バンドルを IIS サーバーにインストールします。 このバンドルをインストールすることで、.NET Core ランタイム、.NET Core ライブラリ、ASP.NET Core モジュールがインストールされます。 このモジュールでは、ASP.NET Core アプリが IIS の背後で実行できるようになります。
次のリンクを使用してインストーラーをダウンロードします。
現在の .NET Core ホスティング バンドルのインストーラー (直接ダウンロード)
IIS サーバーでインストーラーを実行します。
サーバーを再起動するか、コマンド シェルで
net stop was /y
に続けてnet start w3svc
を実行します。
IIS サイトを作成する
IIS サーバーで、アプリの公開フォルダーとファイルを格納するフォルダーを作成します。 以下の手順では、フォルダーのパスはアプリへの物理パスとして IIS に提供されます。 アプリの配置フォルダーとファイル レイアウトの詳細については、「ASP.NET Core のディレクトリ構造」を参照してください。
IIS マネージャーの [接続] パネルで、サーバーのノードを開きます。 [サイト] フォルダーを右クリックします。 コンテキスト メニューで [Web サイトの追加] を選択します。
[サイト名] を指定し、 [物理パス] には作成したアプリの配置フォルダーを設定します。 [バインド] の構成を指定して [OK] を選択し、Web サイトを作成します。
警告
最上位のワイルドカードのバインド (
http://*:80/
とhttp://+:80
) は使用しては いけません 。 最上位のワイルドカードのバインドは、セキュリティの脆弱性に対してアプリを切り開くことができます。 これは、強力と脆弱の両方のワイルドカードに適用されます。 ワイルドカードではなく、明示的なホスト名を使用します。 全体の親ドメインを制御する場合、サブドメイン ワイルドカード バインド (たとえば、*.mysub.com
) にこのセキュリティ リスクはありません (脆弱である*.com
とは対照的)。 詳細については、RFC 9110: HTTP セマンティクス (セクション 7.2. 「Host and :authority (ホストと :authority)」) に関するページを参照してください。プロセス モデル identity に適切なアクセス許可があることを確認します。
アプリ プールの既定の identity (プロセス モデル>Identity) を
ApplicationPoolIdentity
から別の identity に変更した場合は、アプリのフォルダー、データベース、その他の必要なリソースにアクセスするために要求されるアクセス許可が新しい identity に設定されていることを確認します。 たとえば、アプリケーション プールには、アプリがファイルの読み取りおよび書き込みを行うフォルダーへの読み取りおよび書き込みアクセスが必要です。
ASP.NET Core Razor Pages アプリを作成する
ASP.NET Core の概要チュートリアルに従って、Razor Pages アプリを作成します。
アプリを発行および配置する
"アプリを発行する" とは、サーバーでホストできるコンパイル済みのアプリを生成するということです。 "アプリを展開する" とは、発行済みのアプリをホスティング システムに移動するということです。 発行手順は .NET Core SDK で処理されます。一方で、展開手順はさまざまな手法で処理できます。 このチュートリアルでは、"フォルダー" 展開手法を採用しています。
- アプリはフォルダーに発行されます。
- フォルダーの内容が IIS サイトのフォルダーに移動されます (IIS マネージャーのサイトの物理パス)。
- [ソリューション エクスプローラー] でプロジェクトを右クリックし、 [発行] を選択します。
- [発行先を選択] ダイアログで、 [フォルダー] 発行オプションを選択します。
- フォルダーまたはファイル共有パスを選択します。
- ネットワーク共有として開発用のコンピューターで利用できる IIS サイトのフォルダーを作成した場合、共有へのパスを指定します。 現在のユーザーに、共有に発行するための書き込みアクセスを与える必要があります。
- IIS サーバー上の IIS サイト フォルダーに直接展開できない場合、リムーバブル メディア上のフォルダーに発行し、IIS マネージャーでサイトの物理パスである、サーバー上の IIS サイト フォルダーに発行済みのアプリを物理的に移動します。 IIS マネージャーでサイトの
bin/Release/{TARGET FRAMEWORK}/publish
である、サーバー上の IIS サイト フォルダーにbin/Release/{TARGET FRAMEWORK}/publish
フォルダーの内容を移動します。
- [発行] を選択します。
Web サイトを閲覧する
アプリには、最初の要求の受信後、ブラウザーでアクセスできます。 サイトの IIS マネージャーで設定したエンドポイント バインドでアプリへの要求を行います。
次の手順
このチュートリアルでは、次の作業を行う方法を学びました。
- .NET Core ホスティング バンドルを Windows Server にインストールします。
- IIS サイトを IIS マネージャーで作成します。
- ASP.NET Core アプリを展開します。
IIS で ASP.NET Core アプリをホストする方法の詳細については、IIS の概要に関する記事を参照してください。
その他の技術情報
ASP.NET Core ドキュメント セットの記事
- IIS の ASP.NET Core モジュール (ANCM)
- ASP.NET Core のディレクトリ構造
- Azure App Service および IIS での ASP.NET Core のトラブルシューティング
- ASP.NET Core で HTTPS を適用する
- IIS での WebSockets
ASP.NET Core アプリの展開に関する記事
- Visual Studio を使用して Azure に ASP.NET Core アプリを発行する
- Visual Studio Code で ASP.NET Core アプリを Azure に公開する
- ASP.NET Core アプリを配置するための Visual Studio 発行プロファイル (.pubxml)
IIS HTTPS 構成に関する記事
IIS と Windows Server に関する記事
IIS 管理者用の展開リソース
ASP.NET Core