ホームページ > バックエンド開発 > C++ > ASP.NET Core のプログラムとスタートアップ クラスは、さまざまなバージョンでどのように進化してきましたか?

ASP.NET Core のプログラムとスタートアップ クラスは、さまざまなバージョンでどのように進化してきましたか?

Linda Hamilton
リリース: 2025-01-13 16:09:43
オリジナル
575 人が閲覧しました

How Have ASP.NET Core's Program and Startup Classes Evolved Across Different Versions?

ASP.NET Core の Program および Startup クラスの進化

この記事では、さまざまな ASP.NET Core バージョンにおける Program クラスと Startup クラスの進化について説明します。

ASP.NET Core 6.x

ASP.NET Core 6.x では、Program クラスと Startup クラスに大きな変更が加えられています:

  • トップレベルのステートメントを使用する場合、Program.Main() テンプレート コードは必要ありません。
  • 暗黙的な using ディレクティブ。
  • Startup クラスは不要になり、すべてのコードは Program ファイル内にあります。
  • WebApplicationWebApplicationBuilderを紹介します。

ASP.NET Core 6.x の Program.cs ファイルの例:

<code class="language-csharp">public class Program
{
    public static void Main(string[] args)
    {
        var builder = WebApplication.CreateBuilder(args);

        // 配置服务
        builder.Services.AddControllersWithViews();

        var app = builder.Build();

        // 配置 HTTP 请求管道
        app.MapControllerRoute(
            name: "default",
            pattern: "{controller=Home}/{action=Index}/{id?}");

        app.Run();
    }
}</code>
ログイン後にコピー

ASP.NET Core 3.x ~ 5.x

ASP.NET Core 3.x では、ワーカー サービスをサポートするための汎用ホスト ビルダーが導入されています。

<code class="language-csharp">public class Program
{
    public static void Main(string[] args)
    {
        CreateHostBuilder(args).Build().Run();
    }

    public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .ConfigureWebHostDefaults(webBuilder =>
            {
                webBuilder.UseStartup<Startup>();
            });
}</code>
ログイン後にコピー

Startup クラスはバージョン 2.x に似ています。

ASP.NET Core 2.x

ASP.NET Core 2.x では、Startup は DI システムによって挿入されるため、IConfiguration コンストラクターで

をインスタンス化する必要はありません。
<code class="language-csharp">public Startup(IConfiguration configuration, IHostingEnvironment env)
{
    this.HostingEnvironment = env;
    this.Configuration = configuration;
}</code>
ログイン後にコピー

ASP.NET Core 1.x

ASP.NET Core 1.x では、Startupappsettings ファイルを明示的にロードする必要があります:

<code class="language-csharp">public Startup(IHostingEnvironment env)
{
    var builder = new ConfigurationBuilder()
        .SetBasePath(env.ContentRootPath)
        .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
        .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
        .AddEnvironmentVariables();

    this.Configuration = builder.Build();
}</code>
ログイン後にコピー

appsettings.json から値

を取得します

appsettings.json から値を取得するには、主に 2 つの方法があります:

簡単な方法

IConfiguration を介して設定全体をコントローラーまたはクラスに挿入し、指定されたキーを使用して必要な値を取得します:

<code class="language-csharp">public class AccountController : Controller
{
    private readonly IConfiguration _config;

    public AccountController(IConfiguration config)
    {
        _config = config;
    }

    public IActionResult ResetPassword()
    {
        var vm = new ResetPasswordViewModel
        {
            PasswordRequiredLength = _config.GetValue<int>("AppIdentitySettings:Password:RequiredLength"),
            RequireUppercase = _config.GetValue<bool>("AppIdentitySettings:Password:RequireUppercase")
        };

        return View(vm);
    }
}</code>
ログイン後にコピー

オプションパターン

複数の設定または複雑な設定の場合、オプション モードはクラスを使用して構成の階層を表します。

  1. アプリケーション設定の構造を表す構成クラスを定義します。例:
<code class="language-csharp">public class AppIdentitySettings
{
    public UserSettings User { get; set; }
    public PasswordSettings Password { get; set; }
    public LockoutSettings Lockout { get; set; }
}

// ... (UserSettings, PasswordSettings, LockoutSettings classes as before) ...</code>
ログイン後にコピー
  1. StartupConfigureServices に構成インスタンスを登録します:
<code class="language-csharp">var identitySettingsSection = _configuration.GetSection("AppIdentitySettings");
services.Configure<AppIdentitySettings>(identitySettingsSection);</code>
ログイン後にコピー
  1. それを使用するコントローラー/クラスに IOptions<AppIdentitySettings> を挿入します:
<code class="language-csharp">public class AccountController : Controller
{
    private readonly AppIdentitySettings _appIdentitySettings;

    public AccountController(IOptions<AppIdentitySettings> appIdentitySettingsAccessor)
    {
        _appIdentitySettings = appIdentitySettingsAccessor.Value;
    }

    public IActionResult ResetPassword()
    {
        var vm = new ResetPasswordViewModel
        {
            PasswordRequiredLength = _appIdentitySettings.Password.RequiredLength,
            RequireUppercase = _appIdentitySettings.Password.RequireUppercase
        };

        return View(vm);
    }
}</code>
ログイン後にコピー

以上がASP.NET Core のプログラムとスタートアップ クラスは、さまざまなバージョンでどのように進化してきましたか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート