次の方法で共有


.NET 8 の ASP.NET Core から .NET 9 の ASP.NET Core に移行する

この記事では、.NET 8 の ASP.NET Core を .NET 9 の ASP.NET Core に更新する方法について説明します。

[前提条件]

global.json で .NET SDK のバージョンを更新する

特定の .NET SDK バージョンを対象とする global.json ファイルに依存している場合は、 version プロパティをインストールされている .NET 9 SDK バージョンに更新します。 例えば次が挙げられます。

{
  "sdk": {
-    "version": "8.0.100"
+    "version": "9.0.100"
  }
}

ターゲット フレームワークを更新する

プロジェクト ファイルのターゲット フレームワーク モニカー (TFM)net9.0 に更新します。

<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
-    <TargetFramework>net8.0</TargetFramework>
+    <TargetFramework>net9.0</TargetFramework>
  </PropertyGroup>

</Project>

パッケージ参照の更新

プロジェクト ファイルで、各 Microsoft.AspNetCore.*Microsoft.EntityFrameworkCore.*Microsoft.Extensions.*System.Net.Http.Json パッケージ参照の Version 属性を 9.0.0 以降に更新します。 例えば次が挙げられます。

<ItemGroup>
-   <PackageReference Include="Microsoft.AspNetCore.JsonPatch" Version="8.0.2" />
-   <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="8.0.2" />
-   <PackageReference Include="Microsoft.Extensions.Caching.Abstractions" Version="8.0.0" />
-   <PackageReference Include="System.Net.Http.Json" Version="8.0.0" />
+   <PackageReference Include="Microsoft.AspNetCore.JsonPatch" Version="9.0.0" />
+   <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="9.0.0" />
+   <PackageReference Include="Microsoft.Extensions.Caching.Abstractions" Version="9.0.0" />
+   <PackageReference Include="System.Net.Http.Json" Version="9.0.0" />
</ItemGroup>

UseStaticFilesMapStaticAssets に置き換えます。

UseStaticFilesをアプリのMapStaticAssets ファイル内のProgramに置き換えることで、Web アプリ内の静的ファイルの処理を最適化します。

- app.UseStaticFiles();
+ app.MapStaticAssets();

MVC &Razor Pages アプリでは、.WithStaticAssets後またはMapRazorPagesMapControllerRouteした後、Program.csへの呼び出しをチェーンする必要があります。 例については、ASP.NET Core の Static ファイルを参照してください。

ASP.NET Core では、ビルド時と発行時に静的ファイルのフィンガープリントとプリ圧縮が自動的に行われ、適切なキャッシュ ヘッダーでエンドポイント ルーティングを使用して、最適化されたファイルがエンドポイントとして表示 MapStaticAssets

アプリからフィンガープリントされたファイル名を解決するには:

  • Blazor アプリでは、ComponentBase.Assets プロパティを使用します。 Razorを使用するように、.razor コンポーネント ファイル (@Assets["{ASSET PATH}"]) 内の静的資産への明示的な参照を更新します。ここで、{ASSET PATH} プレースホルダーは資産へのパスです。 これは、 フレームワーク スクリプト () に対して行う必要Blazor注意してください。 次の例では、Bootstrap、Blazor プロジェクト テンプレート アプリ スタイル シート (app.css)、および ( のアプリの名前空間に基づく) BlazorSampleはルート コンポーネント (通常はApp コンポーネント (Components/App.razor) にリンクされています。

    <link rel="stylesheet" href="@Assets["bootstrap/bootstrap.min.css"]" />
    <link rel="stylesheet" href="@Assets["app.css"]" />
    <link rel="stylesheet" href="@Assets["BlazorSample.styles.css"]" />
    
  • MVC & Razor Pages アプリでは、スクリプトおよびリンク タグ ヘルパーによって、フィンガープリントされたファイル名が自動的に解決されます。

JavaScript モジュールをインポートするときにフィンガープリントされたファイル名を解決するには、生成された マップを追加します:

  • Blazor アプリで、(ImportMap) コンポーネントをアプリのルート コンポーネントの<head>コンテンツ (通常は App コンポーネント (App.razor) に追加します。

    <ImportMap />
    
  • MVC Razor ページ アプリで、メイン レイアウト ファイルの先頭に <script type="importmap"></script> を追加します。これは、マップ タグのインポート ヘルパーによって更新されます。

詳細については、次のリソースを参照してください。

Blazor

Blazor Web Appに簡単な認証状態のシリアル化を採用する

Blazor Web Apps では、必要に応じて、 単純な認証状態のシリアル化を採用できます

サーバー プロジェクトで次の手順を実行します。

  • 永続化認証状態プロバイダー (PersistingAuthenticationStateProvider.cs) を削除します。

  • Program ファイルからサービス登録を削除します。 代わりに、AddAuthenticationStateSerializationAddRazorComponentsする呼び出しをチェーンします。

    - builder.Services.AddScoped<AuthenticationStateProvider, PersistingAuthenticationStateProvider>();
    
      builder.Services.AddRazorComponents()
          .AddInteractiveServerComponents()
          .AddInteractiveWebAssemblyComponents()
    +     .AddAuthenticationStateSerialization();
    

この API はがシリアル化するのは、ブラウザーでのアクセス用のサーバー側の名前とロール要求だけです。 すべての要求を含めるには、 SerializeAllClaimstrueに設定します。

.AddAuthenticationStateSerialization(options => options.SerializeAllClaims = true);

クライアント プロジェクト (.Client):

  • 永続的な認証状態プロバイダー (PersistentAuthenticationStateProvider.cs) を削除します。

  • Program ファイルからサービス登録を削除します。 代わりに、サービス コレクションで AddAuthenticationStateDeserialization を呼び出します。

    - builder.Services.AddSingleton<AuthenticationStateProvider, PersistentAuthenticationStateProvider>();
    + builder.Services.AddAuthenticationStateDeserialization();
    

詳細については、「 .NET 9 の ASP.NET Core の新機能」を参照してください。

ストリーミング レンダリング属性に true パラメーターが不要になった

.NET 8 では、ストリーミング レンダリングでは、true パラメーターのenabledを渡す必要がありました。

@attribute [StreamRendering(true)]

.NET 9 以降では、 true は必要に応じて削除できます。 trueenabled パラメーターの既定値になりました。

@attribute [StreamRendering]

重大な変更

.NET の破壊的変更に関する記事を使用して、アプリを新しいバージョンの .NET にアップグレードするときに適用される可能性のある破壊的変更を見つけます。