Migrer d’ASP.NET Core dans .NET 8 à ASP.NET Core dans .NET 9
Cet article explique comment mettre à jour un ASP.NET Core dans .NET 8 vers ASP.NET Core dans .NET 9.
Prérequis
Préversion de Visual Studio 2022 avec la charge de travail ASP.NET et développement web.
Mettre à jour la version du SDK .NET dans global.json
Si vous comptez sur un fichier global.json
pour cibler une version spécifique du kit de développement logiciel (SDK) .NET Core, mettez à jour la propriété version
vers la version du kit de développement logiciel (SDK) .NET 9.0 installée. Par exemple :
{
"sdk": {
- "version": "8.0.100"
+ "version": "9.0.100"
}
}
Mettre à jour le framework cible
Mettez à jour le moniker de framework cible (TFM) du fichier projet vers net9.0
:
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
- <TargetFramework>net8.0</TargetFramework>
+ <TargetFramework>net9.0</TargetFramework>
</PropertyGroup>
</Project>
Mettre à jour les références de package
Dans le fichier projet, mettez à jour l’attribut Version
de chaque référence de package Microsoft.AspNetCore.*
, Microsoft.EntityFrameworkCore.*
, Microsoft.Extensions.*
et System.Net.Http.Json
vers la version 9.0.0 ou ultérieure. Par exemple :
<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>
Remplacer UseStaticFiles
par MapStaticAssets
Optimisez la gestion des fichiers statiques dans vos applications web en remplaçant UseStaticFiles MapStaticAssets par le fichier de l’application Program
:
- app.UseStaticFiles();
+ app.MapStaticAssets();
Dans les applications MVC & Razor Pages, vous devez également chaîner un appel après MapRazorPages
.WithStaticAssets
ou MapControllerRoute
dans Program.cs
. Pour obtenir un exemple, consultez les fichiers statiques dans ASP.NET Core.
ASP.NET Core effectue automatiquement des empreintes digitales et précompresse vos fichiers statiques au moment de la génération et de la publication, puis MapStaticAssets affiche les fichiers optimisés en tant que points de terminaison à l’aide du routage de point de terminaison avec les en-têtes de mise en cache appropriés.
Pour résoudre les noms de fichiers empreintes digitales de votre application :
Dans les Blazor applications, utilisez la ComponentBase.Assets propriété. Mettez à jour les références explicites aux ressources statiques dans les Razor fichiers de composants (
.razor
) à utiliser@Assets["{ASSET PATH}"]
, où l’espace{ASSET PATH}
réservé est le chemin d’accès à la ressource. Notez que cette opération ne doit PAS être effectuée pour les scripts d’infrastructure Blazor (blazor.*.js
). Dans l’exemple suivant, Bootstrap, la feuille de style de l’application Blazor modèle de projet (app.css
) et la feuille de style d’isolation CSS (basée sur l’espace de noms d’une application)BlazorSample
sont liées dans un composant racine, généralement leApp
composant () :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"]" />
Dans les applications MVC & Razor Pages, les tag helpers de script et de lien résolvent automatiquement les noms de fichiers empreintes digitales.
Pour résoudre les noms de fichiers empreintes digitales lors de l’importation de modules JavaScript, ajoutez un mappage d’importation généré :
Dans Blazor les applications, ajoutez le composant (ImportMap) au
<head>
contenu du composant racine de l’application, généralement dans leApp
composant (App.razor
) :<ImportMap />
Dans les applications MVC & Razor pages, ajoutez
<script type="importmap"></script>
à la tête du fichier de disposition principal, qui est mis à jour par l’assistant d’importation de balise de carte.
Pour plus d’informations, consultez les ressources suivantes :
Blazor
Adopter la sérialisation simplifiée de l’état d’authentification pour Blazor Web Apps
Blazor Web Apppeut éventuellement adopter la sérialisation simplifiée de l’état d’authentification.
Dans le projet de serveur :
Supprimez le fournisseur d’état d’authentification persistant (
PersistingAuthenticationStateProvider.cs
).Supprimez l’inscription du service du
Program
fichier. Au lieu de cela, chaînez un appel à AddAuthenticationStateSerialization :AddRazorComponents- builder.Services.AddScoped<AuthenticationStateProvider, PersistingAuthenticationStateProvider>(); builder.Services.AddRazorComponents() .AddInteractiveServerComponents() .AddInteractiveWebAssemblyComponents() + .AddAuthenticationStateSerialization();
L’API sérialise uniquement le nom et les revendications de rôle côté serveur pour l’accès dans le navigateur. Pour inclure toutes les revendications, définissez SerializeAllClaims sur true
:
.AddAuthenticationStateSerialization(options => options.SerializeAllClaims = true);
Dans le projet client (.Client
) :
Supprimez le fournisseur d’état d’authentification permanente (
PersistentAuthenticationStateProvider.cs
).Supprimez l’inscription du service du
Program
fichier. Au lieu de cela, appelez AddAuthenticationStateDeserialization la collection de services :- builder.Services.AddSingleton<AuthenticationStateProvider, PersistentAuthenticationStateProvider>(); + builder.Services.AddAuthenticationStateDeserialization();
Pour plus d’informations, consultez Nouveautés d’ASP.NET Core 9.0.