ASP.NET CoreアプリケーションをIISにデプロイする方法

多くの開発者が初めて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に正常にデプロイできます。

タグ: aspnet-core IIS Deployment Kestrel web-server

6月12日 22:13 投稿