Visual Studio 2022とIIS構成ファイル(applicationhost.config)

Windows環境で、クライアント証明書を使った認証を行うASP.NETアプリを開発するために、IIS設定ファイルであるapplicationhost.configを変更しようと考えました。

事象

Visual Studio 2022で、ASP.NETアプリをデバッグ実行してもIIS設定ファイル(applicationhost.config)が生成されない。

  • Visual Studio 2019(v16)では、デバック実行時にIIS設定ファイル(applicationhost.config)が存在しない場合、このファイルが自動生成されます。このファイルを編集することで、アクセス時にクライアント証明書を要求、等といったIIS Expressの動作を変更できました。このファイルは、次の場所に作成されます。
    (ソリューションフォルダ)\.vs\(プロジェクト名)\config\applicationhost.config
  • Visual Studio 2022(v17)で新規作成したASP.NETプロジェクトでは、デバッグ実行してもIIS設定ファイルが作成されません。手動で同じ場所にapplicationhost.configをコピーしても無視されてしまいます。
  • 実行環境は、Windows 10(64ビット) + Visual Studio 2022(Version 17.1.3)です。

対応

プロファイルとして「IIS Express」を選択してASP.NETアプリを実行することで、IIS設定ファイル(applicationhost.config)が作成されます。

  • Visual Studioでは、ASP.NETアプリを実行するための環境を定義したプロファイルが用意されています。プロファイルにはASP.NETアプリを実行するWebアプリサーバの種類やオプションが含まれています。
  • 使用するプロファイルを変更することで、ASP.NETアプリを実行するWebアプリサーバ(KestrelやIIS Expressなど)を変更することができます。
    • ASP.NETプロジェクトを作成すると、既定でKestrelとIIS Expressサーバのプロファイルが作成されます。Kestrelのプロファイル名はプロジェクト名と同じ、IIS Expressのプロファイルは「IIS Express」になります。
    • プロジェクトで使用する既定のプロファイルはKestrel(プロジェクト名)になっています。
      (画面例ではExampleWebプロジェクトを開いているので、Kestrelのプロファイルは「ExampleWeb」になっています。)
    • プロファイルの一覧は、[デバッグ]-[デバッグ起動プロファイルUIを開く]で確認できます。
      プロファイルや操作手順の詳細についてはマイクロソフトのリファレンスをご覧ください。
  • プロファイルとして「IIS Express」を選択して実行することで、Visual Studio 2019と同様にIIS設定ファイル(applicationhost.config)が自動的に作成できました。
    • プロファイルの変更
    • プロファイルをIIS Expressに変更
  • Visual Studio 2019で使用される既定のプロファイルはIIS Expressでしたが、Visual Studio 2022の既定のプロファイルはKestrelに変更されたようです。(もしかしたら私の環境固有の問題かもしれません。)