NDW

アプリ開発やトラブルシューティング等のノウハウ、キャンプや登山の紹介や体験談など。

1. システムエンジニアリング ASP.NET Core IIS 基盤技術 実装技術

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に変更されたようです。(もしかしたら私の環境固有の問題かもしれません。)






-1. システムエンジニアリング, ASP.NET Core, IIS, 基盤技術, 実装技術

関連記事

承認欲求が強くて失敗したSEの話

愚直に成果を出すことしか知らなかったシステムエンジニアが、デスマーチなプロジェクトで心を病みそうになったが、「嫌われる勇気」を読んで逆に強くなったお話です。 モノ作りが好きだが「コミュニケーションが苦 …

セッションタイムアウトの必要性

「セッションタイムアウトって何で必要なんですかね?」という問いがあった。 その人は「セッションデータの肥大化によるリソース枯渇や性能劣化を防止」という意見。 自分の場合、「それもあるかもしれないが、ど …

DB操作フレームワーク はJPA or mybatis?

開発に向けた準備で、開発標準を準備するフレームワーク(FW)チーム、それらを使って実装を行う業務チームが集まって、「DB操作を行うためのFWは何を使うか?」という協議になった。 FWチームは、FW・J …

LinuxにWildfly18のインストール

Linux(REHL8.3)にWildfly18をインストールする手順を説明します。 概要 RHEL8.3環境を使ったWildfly18+JDK11のインストール手順を説明します。 Red Hat J …

Javaでサポートする暗号化アルゴリズム

Java暗号化アーキテクチャ Javaで暗号化処理を実装する場合、Java暗号化アーキテクチャ(Java Cryptography Architecture: JCA)と呼ばれるフレームワークを使いま …