🐥note.

小鳥とMicrosoft <3 なエンジニアの技術Blog📚

ASP.NET CoreのCreateDefaultBuilderが何を設定してくれているか

ASP.NET CoreのデフォルトテンプレートではProgram.csに以下のコードが記述されています。

public static IHostBuilder CreateHostBuilder(string[] args) =>
           Host.CreateDefaultBuilder(args)
               .ConfigureWebHostDefaults(webBuilder =>
               {
                   webBuilder.UseStartup<Startup>();
               });

このCreateDefaultBuilderって何を設定してくれてるんだろ?と調べた結果です。

Set up a host

全部Microsoft Docsに書いてありました

docs.microsoft.com

以下まとめ。

  • アプリケーションのホスティング設定プロバイダを使用してKestrelサーバーをWebサーバーとして設定します。Kestrelサーバーの既定のオプションについては、 「ASP.NET CoreでのKestrel Webサーバーの実装」 を参照。

  • コンテンツルートをGetCurrentDirectoryが返すパスに設定します。
    .UseContentRoot()による設定

  • 以下の値をConfigureHostConfigurationでロードする

  • 以下の値をConfigureAppConfigurationでロードする

    • appsettings.json
    • appsettings.{Environment}.json
    • Secret Managerの値
      Developmentモードで実行する際のみ
      ※EntryAssembly名がSecretManagerのKeyとなる
    • 環境変数
    • コマンドライン引数
  • ConfigureLoggingConsoleDebug出力設定を追加します
    .AddConsole(), .AddDebug()
    設定にはappsettings.jsonとappsettings.{Environment}.jsonのLoggingセクションで指定されたLogging Filtering規則を使用します。

  • ASP.NET Core ModuleをIISで動かす場合、CreateDefaultBuilderIIS Integrationを有効にし、アプリケーションのベースアドレスとポートを設定します。
    IIS Integrationは、起動エラーをキャプチャするようにアプリケーションを設定することもできます。IISの既定のオプションについては、 「Host ASP.NET Core on Windows with IIS」を参照してください。

  • Developmentモードが有効の場合、ServiceProviderOptionstrueに設定します。詳細については、 「スコープの検証」 を参照してください。

だそうです。

おわり

ちょっとしたものならCreateDefaultBuilderを指定するだけでも良さそうですね。Secret Managerの設定までしてくれているのは意外でした。