次の方法で共有


.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 Core SDK バージョンを対象とする global.json ファイルを使用する場合は、version プロパティを、インストールされる .NET 9.0 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をアプリのProgram ファイル内のMapStaticAssetsに置き換えることで、Web アプリ内の静的ファイルの処理を最適化します。

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

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

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

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

  • Blazor アプリでは、ComponentBase.Assets プロパティを使用します。 @Assets["{ASSET PATH}"]を使用するように、Razor コンポーネント ファイル (.razor) 内の静的資産への明示的な参照を更新します。ここで、{ASSET PATH} プレースホルダーは資産へのパスです。 これは、Blazor フレームワーク スクリプト (blazor.*.js) に対して行う必要注意してください。 次の例では、Bootstrap、Blazor プロジェクト テンプレート アプリ スタイル シート (app.css)、および (BlazorSample のアプリの名前空間に基づく) CSS 分離スタイルシートはルート コンポーネント (通常は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 ファイルからサービス登録を削除します。 代わりに、AddRazorComponentsAddAuthenticationStateSerializationする呼び出しをチェーンします。

    - 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();
    

詳しくは、「ASP.NET Core 9.0 の新機能」をご覧ください。

その他のリソース