インターネットインフォメーションサービス(IIS)を使用したASP.NET Coreアプリのホスティング
IISを使用したASP.NET Coreアプリのホスティング概要
従来のASP.NETアプリケーションは、IISマネージャーからアプリケーションとして登録を行い、必要な設定を行うことで、IISのワーカープロセス上で動作することができました。
しかし、前述のとおり、ASP.NET Coreクロスプラットフォームで動作できるWebサーバー機能を持つコンソールアプリケーションとして稼働します。
つまり、Webアプリの実体はIISではなく、IISとは独立したコンソールアプリケーションにホストされて動作しています。
IISからASP.NET Coreアプリを稼働させるためには、IISからHTTPを連携するように構成する必要があります。
この一連のHTTPの連携を担うのが「ASP.NET Coreモジュール」とよばれるIIS連携モジュールです。
ASP.NET Coreモジュールは、IIS内に組み込まれることで、ASP.NET Coreアプリへリクエストやレスポンスを連携するリバースプロキシーとしての機能を実現します。
また、ASP.NET Coreアプリも、IISの持つセキュリティ機能を利用することで、Kestrelが持たない機能をカバーすることができます。
それでは、以降で具体的な構築手順を確認しましょう。
必要なモジュールのセットアップ
IISを利用するために、以下のセットアップを実施します。
- IIS本体
- .NET Core Windows Server Hosting Bundle
IISを利用してASP.NET CoreのホスティングができるOSは以下の通りです。
プラットフォーム | OS |
---|---|
サーバー | Windows Server 2008 R2以降 |
クライアント | Windows 7以降 |
それぞれの有効化手順について以下に説明します。
クライアントOSにおけるIISの有効化
クライアントOSの有効化は、コントロールパネルから「プログラム」>「プログラムと機能」>「Windows機能の有効化または無効化」から行うことができます。
Windows 10では、設定から「アプリ」>「アプリと機能」>関連設定「プログラムと機能」>「Windows機能の有効化または無効化」から行うことができます。
Windows機能の有効化または無効化をクリックして開くダイアログから、「インターネットインフォメーションサービス」を有効にします。
「インターネットインフォメーションサービス」をクリックすると必要な機能が追加されます。
サーバーOSにおけるIISの有効化
Windows Serverでは、「役割と機能の追加」から「Webサーバー(IIS)」にチェックを行います。
チェックすると確認のダイアログが表示されますので、そのまま「機能の追加」ボタンをクリックします。
ダイアログが閉じると元の「役割と機能の追加」画面に戻ります。
その他には特に追加する機能はないので、「インストール」ボタンが有効になるまで「次へ」ボタンのクリックを行い、「インストール」ボタンをクリックします。
.NET Core Windows Serverホスティングバンドルをインストール
セットアップ直後のIISには、.NET CoreやASP.NET Coreの実行に必要となるファイルはインストールされていません。
そこで、IISを使用する場合はWindows Server専用のモジュール群である「.NET Core Windows Server ホスティングバンドル」のインストールを行います。
.NET Core Windows Server ホスティングバンドルの実行には「Microsoft Visual C++ 2015 Redistributable Update 3」が必要になりますので、インストールしていない場合は先にこちらをインストールします。
なお、筆者の環境では、図のように同意のためのチェックボックスが正しく表示されませんでしたが、マウスカーソルをチェックボックスのあたりに移動させると次の図のように表示することができました(Installボタンの上に注目)。
すべてのインストールが完了したら、ここで一度、再起動を行います。