コンテンツにスキップ

Blazor Web アプリプロジェクトの構成⚓︎

プロジェクトの作成 において、 Blazor Web アプリ / Fluent Blazor Web アプリのテンプレートを使用して作成したプロジェクトに対して、必要な設定を追加します。

例外ハンドリングの設定⚓︎

Blazor Web アプリでは、以下の 2 種類の未処理例外が発生し得ます。

  1. Blazor ランタイム内で発生する未処理例外(コンポーネント実行時など)
  2. Blazor 起動前に .NET ランタイム内で発生する未処理例外(アプリ起動時など)

これらに共通的に対処するため、ErrorBoundary コンポーネントとエラーページを追加します。 具体的な実装方法については、 集約エラーハンドラーの実装 を参照してください。

HTTP 通信ログの出力⚓︎

実際の開発作業では、意図した通りの HTTP リクエスト / レスポンスが送受信できているか確認することがよくあります。 そのために、開発環境では HTTP 通信ログを出力するよう設定することを推奨します。 HTTP 通信ログの出力 に従って、 Blazor Web アプリプロジェクトの Program.cs を変更します。 その後、開発環境の ログレベルの設定 の構成例を参照し、 設定ファイルにキーを追加してください。

SignalR 通信ログの出力⚓︎

Blazor Web アプリでは、 UI 更新やイベント通知に SignalR によるクライアント / サーバー間の双方向通信が行われます。 開発作業中に意図した通信が行われているか確認するために、開発環境では SignalR 通信ログを出力するよう設定することを推奨します。 SignalR 通信ログを出力するためには、 Microsoft.AspNetCore.SignalR と Microsoft.AspNetCore.Http.Connections カテゴリーのログを出力対象に追加する必要があります。 開発環境の ログレベルの設定 の構成例を参照し、 LogLevel 要素にキーとログレベルを追加してください。 詳細は ASP.NET Core SignalR でのログと診断 を参照してください。

ログレベルの設定⚓︎

本番環境向けのログレベル設定を、 appsettings.json に、開発環境向けのログレベル設定を appsettings.Development.json にそれぞれ行います。 Information レベル以上のログを出力するように設定しましょう。 ただし、 Microsoft.AspNetCore のカテゴリーについては、 Warning 以上のレベルのみ出力するようにします。 開発しているアプリケーションから出力するログのログレベルも、明示的に設定しておくことを推奨します。 例のように、 LogLevel 要素にソリューション名と同名のキーを追加し、値としてログレベルを設定します。 通常は Information を設定しましょう。

appsettings.json の設定例
1
2
3
4
5
6
7
8
9
{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning",
      "AaaSubSystem": "Information"
    }
  },
}

開発環境向けのログレベル設定は appsettings.Development.json に行います。 開発環境では、開発者が設定したデバッグレベルのログも出力できるように設定します。 例のように、 LogLevel 要素にソリューション名と同名のキーを追加し、 Debug を設定します。 加えて、下記の例では HTTP 通信ログと SignalR 通信ログが出力されるようにキーとログレベルを設定しています。

appsettings.Development.json の設定例
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning",
      "Microsoft.AspNetCore.HttpLogging": "Warning",
      "Microsoft.AspNetCore.SignalR": "Information",
      "Microsoft.AspNetCore.Http.Connections": "Information",
      "AaaSubSystem": "Debug"
    }
  },
}