多くの開発者が初めてIISでASP.NET Coreアプリケーションをデプロイする際、従来のデプロイ方法では動作しないことに気づきます。これは、ASP.NET Coreアプリケーションが軽量な組み込みWebサーバーであるKestrelを使用しており、IISとの間でデータをやり取りする新しいメカニズムが必要になるためです。
ASP.NET Coreのデプロイモデル
従来のASP.NETアプリケーションとは異なり、ASP.NET CoreアプリケーションはKestrelと呼ばれるクロスプラットフォーム対応のWebサーバーを利用しています。Kestrelはリクエストの監視、受信、応答を処理しますが、IISのような豊富な管理機能はありません。そのため、IISが前段処理を担当する必要があります。
IISは外部からのリクエストをバックエンドのASP.NET Coreアプリケーションに転送し、リバースプロキシとして機能します。
要件環境
ASP.NET Coreアプリケーションのデプロイには以下のオペレーティングシステムが必要です:
- Windows 7以降
- Windows Server 2008 R2以降
.NET Core Windows Server Hostingのインストール
ASP.NET CoreアプリケーションをIISにデプロイするには、.NET Core Windows Server Hostingパッケージをインストールして、IISにリバースプロキシ機能を提供する必要があります。このパッケージには.NET Coreランタイム、.NET Coreライブラリ、およびASP.NET Coreモジュールが含まれています。ASP.NET Coreモジュールがリバースプロキシの作業を担当します。
Microsoftの公式情報によると、オフラインインストールの場合、手動でMicrosoft Visual C++ 2015再頒布可能パッケージを事前にインストールする必要があります。実際にはオンラインインストールでも自動的にMicrosoft Visual C++ 2015再頒布可能パッケージがインストールされないことが多いため、Microsoft Visual C++ 2015再頒布可能パッケージを手動でインストールすることを強く推奨します。
現在、.NET Coreのバージョンアップが非常に速いので、最新バージョンの.NET Core Windows Server Hostingをダウンロードし、サーバー上の.NET CoreバージョンがデプロイするASP.NET Coreアプリケーションのバージョン以下にならないようにしてください。
Microsoft Visual C++ 2015再頒布可能パッケージのダウンロード
ダウンロードURL:https://www.microsoft.com/ja-jp/download/details.aspx?id=53840
最新版.NET Core Windows Server Hostingのダウンロード
ダウンロードURL:https://www.microsoft.com/dotnet/download
インストール後、IISのモジュール設定が正しいことを確認してください:
モジュールには「asp.net core module」が含まれている必要があります。
アプリケーションの公開
2つの方法があります:dotnet publishコマンドを使用するか、Visual Studioを使用して公開できます。
コマンドラインでの公開
dotnet publish
デフォルトではbin/Debugディレクトリに出力されます。出力ディレクトリを指定することも可能です:
dotnet publish -o C:\PublishedApp
または詳細なパラメータを指定:
dotnet publish --framework net6.0 --output "C:\MyPublishedApp" --configuration Release
Visual Studioでの公開
Visual Studioの公開ウィザードを使用してデプロイパッケージを作成できます。
IISでのASP.NET Coreアプリケーション構成
従来のウェブサイトデプロイと同様の手順ですが、いくつかの違いがあります。
1) サイトのルートディレクトリにlogsフォルダを作成します。ログサービスを有効にした場合、ログファイルはここに保存されます。ログを記録しないことも可能ですが、初期デプロイ時のトラブルシューティングに役立つため、作成することを推奨します。
web.configでstdoutLogEnabled="true"を有効化:
<aspNetCore processPath="dotnet"
arguments=".MyApplication.dll"
stdoutLogEnabled="true"
stdoutLogFile=".logs\application.log" />
2) IISマネージャーでサイトを追加します。通常のウェブサイト構成と同様の手順で行います。
3) アプリケーションプールを構成します。左側のナビゲーションから「アプリケーションプール」を選択し、対象のプールを右クリックして「基本設定」を選択し、「.NET CLRバージョン」を「無しの管理コード」に設定します。
デプロイ完了
以上の手順でASP.NET CoreアプリケーションをIISに正常にデプロイできます。