【ASP.NET Core Web】MainでKestrelの設定をする

ネコニウム研究所

PCを利用したモノづくりに関連する情報や超個人的なナレッジを掲載するブログ

【ASP.NET Core Web】MainでKestrelの設定をする

2024-1-16 | ,

.NET 7のASP.NET Core WebアプリのプロジェクトでProgram.csのメソッドMainの中でKestrelの設定したい!

概要

今回の記事では、.NET 7のASP.NET Core WebアプリのプロジェクトでProgram.csのメソッドMainの中でKestrelの設定をする手順を掲載する。

仕様書

環境

  • .NET 7.0

手順書

.NET 7で新しくプロジェクトを作るとStartup.csは作られなくなったり、クラスの構成が変わったり、Program.csMainメソッドにサーバーの起動時の設定を書くように変わったみたい。

UseKestrelを使って、Kestrelの設定するやり方の違いを旧新で比較してみる。

まずは従来の例。

public class Program
{
    ...

    public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .ConfigureWebHostDefaults(webBuilder =>
            {
                webBuilder.UseKestrel(options =>
                {
                    options.Listen(IPAddress.Loopback, 5002);
                });

                //webBuilder.UseUrls("http://127.0.0.1:5002");

                webBuilder.UseStartup<Startup>();
            });
}

次に新しい例。

public class Program
{
    public static void Main(string[] args)
    {
        var builder = WebApplication.CreateBuilder(args);

        builder.WebHost.ConfigureKestrel(kestrelServerOptions =>
        {
            kestrelServerOptions.Listen(IPAddress.Loopback, 5001);
        });

        // UseUrlsもこんな感じでアクセスできる
        //builder.WebHost.UseUrls("http://127.0.0.1:5001");

        ...

        app.Run();
    }
}

builder.WebHostからConfigureKestrelを呼び出せる。

まとめ(感想文)

Mainの中で設定関連の処理をまとめてできると設定の順序が明確になって良いかもしれないと思う今日この頃。