ASP.NET Core(.NET 7.0)をIISにデプロイする手順
はじめに
Windows Server 2019にIISを立ち上げ、ASP.NET Core(.NET 7.0)をデプロイする手順をまとめました。
開発環境
- Windows 10 64bit
- Visual Studio Community 2022
- C#
- .NET 7.0
- ASP.NET Core
実行環境
- Windows Server 2019 試用版
- IIS 10.0
- Hyper-V 10.0
構成

前提
- 認証なし(http)
- オフライン環境のオンプレミスへのデプロイを想定
- Visual Studioから直接IISにデプロイしない(Webアプリケーションを開発環境のローカルフォルダに発行する)
デプロイするアプリケーション
Visual Studioのテンプレートプロジェクトを利用し、サンプルコードをそのままデプロイする。
- ASP.NET Core Web API
- ASP.NET Core Webアプリ(Model-View-Controller)
| 設定内容 | ASP.NET Core Web API | ASP.NET Core Webアプリ(Model-View-Controller) |
|---|---|---|
| フレームワーク | .NET 7.0 | .NET 7.0 |
| 認証の種類 | なし | なし |
| HTTPS用の構成 | チェックなし | チェックなし |
| Dockerを有効にする | チェックなし | チェックなし |
| コントローラーを使用する | チェックあり | N/A |
| OpenAPIサポートを有効にする | チェックなし | N/A |
| 最上位レベルのステートメントを使用しない | チェックなし | チェックなし |
デプロイするまでの全体の流れ

Webサーバーを立ち上げる
- Windows Server 2019にIISをインストールする。
- サーバーマネージャーを起動する
- 「役割と機能と追加」を選択する
- 「開始する前に」はデフォルトのまま次へ
- 「インストールの種類」はデフォルトのまま次へ
- 「サーバーの選択」はデフォルトのまま次へ
- 「サーバーの役割」は「Web サーバー(IIS)」を選択し次へ

- 「機能」はデフォルトのまま次へ
- 「Web サーバーの役割(IIS)」はデフォルトのまま次へ
- 「役割サービス」はデフォルトのまま次へ
- 「確認」でインストールを実行する
- 自動でIISが起動する
- ブラウザで
http://localhostを開くとIISのデフォルトサイトが開く
Webアプリケーションの実行環境をインストールする
- Windows Server 2019に .NET Coreホスティング バンドルをインストールする。
.NET Coreホスティング バンドルとは、Microsoftのサイトより引用.NET Core ホスティング バンドルを IIS サーバーにインストールします。 このバンドルをインストールすることで、.NET Core ランタイム、.NET Core ライブラリ、ASP.NET Core モジュールがインストールされます。 このモジュールでは、ASP.NET Core アプリが IIS の背後で実行できるようになります。
- ホスティング バンドルをMicrosoftのサイトよりダウンロードする
- ダウンロードした
dotnet-hosting-7.0.1-win.exeを実行する
デプロイするWebアプリケーションを作成する
- Windows 10でWebアプリケーションを作成する。
- Visual Studioを起動する
- プロジェクトを作成する
- 「発行」>「フォルダー」

- プロジェクトを発行する
デフォルトはVisual Studioソリューション\プロジェクト\bin\Release\net7.0\publishにWebアプリケーションが作成される
Webアプリケーションを配置する
- Windows 10で作成したWebアプリケーション(フォルダ丸ごと)を、Windows Server 2019にコピーする
- Windows 10(コピー元)
Visual Studioソリューション\プロジェクト\bin\Release\net7.0\publish - Windows Server 2019(コピー先)
デスクトップ
- Windows 10(コピー元)
WebサーバーにWebアプリケーションを登録する
- IISに元からあるDefault Web Site
http:80にWebアプリケーションを登録する。- IISマネージャーを立ち上げる
- アプリケーションプールを追加する
- 「.Net CLRバージョン」は、「マネージドコードなし」にする
- 仮想ディレクトリを追加する
- 「エイリアス」は、クライアントからアクセスするときのURL
http://{ホスト名}:80/{エイリアス}の一部となる - 「物理パス」は、コピーしてきたWebアプリケーションのフォルダを指定する
- 「エイリアス」は、クライアントからアクセスするときのURL
- アプリケーションに変換する
仮想ディレクトリをアプリケーションに変換する
- 「アプリケーションプール」は、手順2で作成した「SampleWebApplication」を指定する
トラブルシューティング
- 500.19エラー
原因は、web.configへのアクセス権がないためである。Webアプリケーションの実行ユーザー(アプリケーションプール)に、コピーしてきたWebアプリケーションのフォルダへのアクセス権を付与する。- アプリケーションの実行ユーザー
IIS AppPool\{アプリケーションプール名=SampleWebApplication} - アプリケーションのフォルダ
デスクトップ\publish
- アプリケーションの実行ユーザー
- 500.35エラー
原因は、複数のアプリケーションで同じアプリケーションプールを使用しているためである。
1つのアプリケーションにつき、1つのアプリケーションプールを用意する。
参考サイト
- ASP.NET CoreをIISにデプロイする全般知識
- IISのインストール方法
- アプリケーションプールとは
- アプリケーションプールの権限付与の方法
- 500.35エラーの対処
- アプリケーションプールのマネージパイプラインについて