はじめに

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をインストールする。
    1. サーバーマネージャーを起動する
    2. 「役割と機能と追加」を選択する
    3. 「開始する前に」はデフォルトのまま次へ
    4. 「インストールの種類」はデフォルトのまま次へ
    5. 「サーバーの選択」はデフォルトのまま次へ
    6. 「サーバーの役割」は「Web サーバー(IIS)」を選択し次へ
      イメージ
    7. 「機能」はデフォルトのまま次へ
    8. 「Web サーバーの役割(IIS)」はデフォルトのまま次へ
    9. 「役割サービス」はデフォルトのまま次へ
    10. 「確認」でインストールを実行する
    11. 自動でIISが起動する
    12. ブラウザで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 の背後で実行できるようになります。

    1. ホスティング バンドルをMicrosoftのサイトよりダウンロードする
    2. ダウンロードしたdotnet-hosting-7.0.1-win.exeを実行する

デプロイするWebアプリケーションを作成する

  • Windows 10でWebアプリケーションを作成する。
    1. Visual Studioを起動する
    2. プロジェクトを作成する
    3. 「発行」>「フォルダー」
      イメージ
    4. プロジェクトを発行する
      デフォルトは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(コピー先)デスクトップ

WebサーバーにWebアプリケーションを登録する

  • IISに元からあるDefault Web Sitehttp:80にWebアプリケーションを登録する。
    1. IISマネージャーを立ち上げる
    2. アプリケーションプールを追加する
      イメージ
      • 「.Net CLRバージョン」は、「マネージドコードなし」にする
    3. 仮想ディレクトリを追加する
      イメージ
      イメージ
      • 「エイリアス」は、クライアントからアクセスするときのURLhttp://{ホスト名}:80/{エイリアス}の一部となる
      • 「物理パス」は、コピーしてきたWebアプリケーションのフォルダを指定する
    4. アプリケーションに変換する
      仮想ディレクトリをアプリケーションに変換する
      イメージ
      イメージ
      • 「アプリケーションプール」は、手順2で作成した「SampleWebApplication」を指定する

トラブルシューティング

  • 500.19エラー イメージ 原因は、web.configへのアクセス権がないためである。Webアプリケーションの実行ユーザー(アプリケーションプール)に、コピーしてきたWebアプリケーションのフォルダへのアクセス権を付与する。
    • アプリケーションの実行ユーザーIIS AppPool\{アプリケーションプール名=SampleWebApplication}
    • アプリケーションのフォルダデスクトップ\publish
  • 500.35エラー イメージ 原因は、複数のアプリケーションで同じアプリケーションプールを使用しているためである。 1つのアプリケーションにつき、1つのアプリケーションプールを用意する。

参考サイト