【ASP.NET Core Web】ConfigureServicesの引数IWebHostEnvironmentはどこへ?

ネコニウム研究所

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

【ASP.NET Core Web】ConfigureServicesの引数IWebHostEnvironmentはどこへ?

2024-1-15 | ,

Startup.csのメソッドConfigureServicesの引数IWebHostEnvironmentはどこへ?

概要

今回の記事では、Startup.csのメソッドConfigureServicesの引数IWebHostEnvironmentでアクセス手順を掲載する。

仕様書

環境

  • .NET 7.0

手順書

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

IServiceCollectionから呼び出してたフィールドIsDevelopmentを旧新で比較してみる。

まずは従来の例。

public class Startup
{
    ...

    public void ConfigureServices(IServiceCollection services, IWebHostEnvironment env)
    {
        ...

        // 以前は引数から呼び出せてた
        if (env.IsDevelopment())
        {
            ...
        }

        ...
    }

    ...
}

次に新しい例。

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

        ...

        var app = builder.Build();

        // WebApplication型から呼び出せるようになった
        if (app.Environment.IsDevelopment())
        {
            ...
        }

        ...

        app.Run();
    }
}

app.MapRazorPages()なとと同じような感じでアクセスできるようなった。env.WebRootPathなどもapp.Environment.WebRootPathという感じで呼び出せる。

まとめ(感想文)

総合的にスッキリして良い変更だとは思うんだけども、こういう変更が頻繁にあるときつい。