0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

第3回:VSCodeでC#コンテナ環境のBlazor Webアプリを修正・デバッグ実行する

Posted at

.NET 9 + PostgreSQL + Docker Compose 対応
開発環境での起動・修正・ブレークポイント実践まで

目次

  1. はじめに
  2. 開発環境の前提
  3. VSCodeでのプロジェクト読み込み
  4. デバッグ構成の確認(ポートとブラウザ自動起動)
  5. アプリの修正とデバッグ実行
  6. ブレークポイント設定の注意点(Blazor特有の構造)
  7. ログイン処理と初期ユーザー情報
  8. トラブルシューティング
  9. まとめ

1. はじめに

本シリーズでは、C# と .NET 9 を用いて
Blazor WebアプリをDockerコンテナ環境で開発する手順を解説している。

前回までに、GitHubからリポジトリを取得し、
docker-compose.yml によりPostgreSQLを起動した。

今回は、Visual Studio Code(VSCode)でBlazorアプリ(src/WebApp)を修正し、
ローカル開発環境でデバッグ実行する方法を扱う。

注意:本記事は開発環境を対象としている。
セキュリティ(認証・暗号化・Secret管理)は含まない。
運用時には Program.cs の初期化処理やパスワード管理を安全な方式に置き換えること。


2. 開発環境の前提

  • macOS または Windows + Docker Desktop
  • GitHubから dotnet9-webapp リポジトリを取得済み
  • PostgreSQL コンテナが docker-compose により起動済み
  • VSCode に以下拡張機能が導入されている
    • C#(Microsoft)
    • C# Dev Kit
    • IntelliCode
    • Docker
    • YAML
    • AWS Toolkit
    • GitLens
    • Markdown All in One

3. VSCodeでのプロジェクト読み込み

  1. VSCodeを起動する。
  2. メニューから [ファイル] → [フォルダーを開く] を選択する。
  3. dotnet9-webapp/src/WebApp フォルダーを指定する。
  4. .vscode/launch.json が検出され、自動的にC#デバッグ設定が読み込まれる。

リポジトリ内には .slnWebApp.sln)および .csprojWebApp.csproj)が存在し、
VSCodeが自動的に構成を認識する。


4. デバッグ構成の確認(ポートとブラウザ自動起動)

4.1 .vscode/launch.json

このファイルは、VSCodeでアプリを起動するための定義を含む。

{
  "configurations": [
    {
      "name": ".NET Core Launch (web)",
      "type": "coreclr",
      "request": "launch",
      "env": {
        "ASPNETCORE_ENVIRONMENT": "Development",
        "ASPNETCORE_URLS": "http://localhost:9000"
      },
      "serverReadyAction": {
        "action": "openExternally",
        "pattern": "\\bNow listening on:\\s+(https?://\\S+)"
      }
    }
  ]
}
  • ASPNETCORE_URLS により、アプリは http://localhost:9000 で起動する。
  • serverReadyAction により、Kestrelが起動してログに
    Now listening on: http://localhost:9000
    と出力されたタイミングでブラウザが自動的に開く。

この設定は .vscode/launch.json 内部にあり、Visual Studio 専用の launchSettings.json とは異なる。


4.2 Properties/launchSettings.json

{
  "profiles": {
    "WebApp": {
      "commandName": "Project",
      "launchBrowser": false,
      "applicationUrl": "http://localhost:5011",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    }
  }
}

この設定は Visual Studio での起動専用であり、
VSCode では参照されない。

VSCode実行時は .vscode/launch.json が優先され、
ポート9000でアプリが起動する。


5. アプリの修正とデバッグ実行

  1. src/WebApp 配下の Razor コンポーネントまたはC#コードを開く。

  2. 左メニュー「実行とデバッグ(Ctrl+Shift+D)」を開き、
    構成「.NET Core Launch (web)」を選択する。

  3. F5キー または 実行ボタン を押してデバッグを開始する。

  4. 出力パネルに次のように表示されれば起動成功である。

    Building...
    Now listening on: http://localhost:9000
    Application started. Press Ctrl+C to shut down.
    
  5. ブラウザが自動で起動し、/Login 画面が表示される。


6. ブレークポイント設定の注意点(Blazor特有の構造)

このリポジトリでは、すべての Blazor コンポーネントが
単一ファイル構成(.razor ファイル内に @code ブロックを含む)で実装されている。
.razor.cs(コードビハインド)は存在しない。

.razor ファイルはビルド時に自動で
obj/Debug/net9.0/Razor/... 配下に .razor.g.cs へ変換される。

このため、VSCode のデバッガでは .razor 内の @code ブロック上に
設定したブレークポイントが無視されることがある。

対策:

  • .razor 内で止まらない場合は、Program.cs や関連C#クラス側に設定する。
  • Visual Studio (Windows版) では .razor 内ブレークが有効な場合がある。
ファイル 状況 備考
.razor@code 停止しない場合がある VSCodeではシンボル解決が曖昧
Program.cs 確実に停止 通常のC#コードとして扱われる

7. ログイン処理と初期ユーザー情報

アプリケーション起動時に、Program.cs 内で管理ユーザーが初期化される。

// admin ユーザーの初期投入または更新
var adminUser = db.AppUsers.FirstOrDefault(u => u.UserName == "admin");
var adminPassword = Environment.GetEnvironmentVariable("ADMIN_PASSWORD") ?? "admin123!";

ユーザー名:admin
パスワード:環境変数 ADMIN_PASSWORD(未設定時は "admin123!"

この仕組みは開発用の暫定実装であり、
運用環境では Secrets Manager 等で安全に管理する必要がある。


8. トラブルシューティング

現象 確認ポイント
アプリが起動しない dotnet build のエラー有無を確認する
ブラウザが開かない .vscode/launch.jsonserverReadyAction 設定を確認する
ポートが異なる ASPNETCORE_URLS の値が9000であるか確認する
ブレークポイントが効かない .razor 内では止まらない場合がある。Program.cs に設定する
ログインできない DB初期化および環境変数 ADMIN_PASSWORD を確認する

9. まとめ

  • .vscode/launch.json により、アプリは http://localhost:9000 で起動します。
  • ブラウザ自動起動は serverReadyAction により行われます。
  • .razor 内のブレークポイントは VSCode では安定しません。
  • 初期ユーザーは Program.cs にて生成(admin / admin123!)
  • セキュリティ設定は本稿の対象外となります。
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?