.NET 8 の ASP.NET Core から .NET 9 の ASP.NET Core に移行する
この記事では、.NET 8 の ASP.NET Core を .NET 9 の ASP.NET Core に更新する方法について説明します。
前提条件
Visual Studio 2022 Preview と ASP.NET および Web 開発ワークロード。
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>
UseStaticFiles
を MapStaticAssets
に置き換えます。
UseStaticFilesをアプリのProgram
ファイル内のMapStaticAssetsに置き換えることで、Web アプリ内の静的ファイルの処理を最適化します。
- app.UseStaticFiles();
+ app.MapStaticAssets();
MVC &Razor Pages アプリでは、MapRazorPages
後またはProgram.cs
でMapControllerRoute
した後、.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
ファイルからサービス登録を削除します。 代わりに、AddRazorComponentsでAddAuthenticationStateSerializationする呼び出しをチェーンします。- builder.Services.AddScoped<AuthenticationStateProvider, PersistingAuthenticationStateProvider>(); builder.Services.AddRazorComponents() .AddInteractiveServerComponents() .AddInteractiveWebAssemblyComponents() + .AddAuthenticationStateSerialization();
この API がシリアル化するのは、ブラウザーでアクセスするためのサーバー側の名前とロールの要求だけです。 すべての要求を含めるには、 SerializeAllClaims を true
に設定します。
.AddAuthenticationStateSerialization(options => options.SerializeAllClaims = true);
クライアント プロジェクト (.Client
):
永続的な認証状態プロバイダー (
PersistentAuthenticationStateProvider.cs
) を削除します。Program
ファイルからサービス登録を削除します。 代わりに、サービス コレクションで AddAuthenticationStateDeserialization を呼び出します。- builder.Services.AddSingleton<AuthenticationStateProvider, PersistentAuthenticationStateProvider>(); + builder.Services.AddAuthenticationStateDeserialization();
詳しくは、「ASP.NET Core 9.0 の新機能」をご覧ください。
その他のリソース
ASP.NET Core