Migreren van ASP.NET Core in .NET 8 naar ASP.NET Core in .NET 9
In dit artikel wordt uitgelegd hoe u een ASP.NET Core in .NET 8 bijwerkt naar ASP.NET Core in .NET 9.
Voorwaarden
Visual Studio 2022 met de ASP.NET- en webontwikkelingsworkload.
De .NET SDK-versie bijwerken in global.json
Als u afhankelijk bent van een global.json
-bestand om een specifieke .NET Core SDK-versie te targeten, werkt u de eigenschap version
bij naar de .NET 9.0 SDK-versie die is geïnstalleerd. Bijvoorbeeld:
{
"sdk": {
- "version": "8.0.100"
+ "version": "9.0.100"
}
}
Het doelframework bijwerken
Werk de Target Framework Moniker (TFM)- van het projectbestand bij naar net9.0
:
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
- <TargetFramework>net8.0</TargetFramework>
+ <TargetFramework>net9.0</TargetFramework>
</PropertyGroup>
</Project>
Pakketverwijzingen bijwerken
Werk in het projectbestand elke Microsoft.AspNetCore.*
, Microsoft.EntityFrameworkCore.*
, Microsoft.Extensions.*
en System.Net.Http.Json
-pakketreferentie's Version
-kenmerk bij tot 9.0.0 of hoger. Bijvoorbeeld:
<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
vervangen door MapStaticAssets
Optimaliseer de verwerking van statische bestanden in uw web-apps door UseStaticFiles te vervangen door MapStaticAssets in het Program
-bestand van de app:
- app.UseStaticFiles();
+ app.MapStaticAssets();
In MVC & Razor Pages-apps moet u ook een aanroep koppelen aan .WithStaticAssets
na MapRazorPages
of MapControllerRoute
in Program.cs
. Zie de Statische bestanden in ASP.NET Core-voor een voorbeeld.
ASP.NET Core automatisch vingerafdrukken en precomprimeert uw statische bestanden tijdens de build- en publicatietijd, en MapStaticAssets de geoptimaliseerde bestanden weer als eindpunten met eindpuntroutering met de juiste cachingheaders.
U kunt de namen van vingerafdrukbestanden oplossen vanuit uw app:
Gebruik in Blazor apps de eigenschap ComponentBase.Assets. Werk expliciete verwijzingen naar statische assets in Razor onderdeelbestanden (
.razor
) bij om@Assets["{ASSET PATH}"]
te gebruiken, waarbij de tijdelijke aanduiding{ASSET PATH}
het pad naar de asset is. Houd er rekening mee dat dit NIET worden uitgevoerd voor de Blazor framework-scripts (blazor.*.js
). In het volgende voorbeeld zijn bootstrap, het Blazor projectsjabloon-app-opmaakmodel (app.css
) en het CSS-isolatiemodel (op basis van de naamruimte van een app vanBlazorSample
) gekoppeld aan een hoofdonderdeel, meestal hetApp
onderdeel (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"]" />
In MVC & Razor Pages-apps worden de bestandsnamen met vingerafdruk automatisch omgezet door de script- en linktaghelpers.
Als u de namen van vingerafdrukken wilt oplossen bij het importeren van JavaScript-modules, voegt u een gegenereerde importtoewijzing toe:
Voeg in Blazor apps het onderdeel (ImportMap) toe aan de
<head>
inhoud van het hoofdonderdeel van de app, meestal in hetApp
onderdeel (App.razor
):<ImportMap />
Voeg in MVC-apps & Razor pagina's
<script type="importmap"></script>
toe aan het hoofd van het hoofdindelingsbestand, dat wordt bijgewerkt door de Helper kaarttag importeren.
Zie de volgende bronnen voor meer informatie:
Blazor
Vereenvoudigde serialisatie van verificatiestatussen gebruiken voor Blazor Web Apps
Blazor Web Apps kunnen optioneel vereenvoudigde serialisatie van verificatiestatussen.
In het serverproject:
Verwijder de Persistente Authenticatiestatusprovider (
PersistingAuthenticationStateProvider.cs
).Verwijder de serviceregistratie uit het
Program
-bestand. Koppel in plaats daarvan een aanroep aan AddAuthenticationStateSerialization op AddRazorComponents:- builder.Services.AddScoped<AuthenticationStateProvider, PersistingAuthenticationStateProvider>(); builder.Services.AddRazorComponents() .AddInteractiveServerComponents() .AddInteractiveWebAssemblyComponents() + .AddAuthenticationStateSerialization();
De API serialiseert alleen de naam en rolclaims aan de serverzijde voor toegang in de browser. Als u alle claims wilt opnemen, stelt u SerializeAllClaims in op true
:
.AddAuthenticationStateSerialization(options => options.SerializeAllClaims = true);
In het clientproject (.Client
):
Verwijder de provider voor permanente verificatiestatus (
PersistentAuthenticationStateProvider.cs
).Verwijder de serviceregistratie uit het
Program
-bestand. Roep in plaats daarvan AddAuthenticationStateDeserialization aan voor de serviceverzameling:- builder.Services.AddSingleton<AuthenticationStateProvider, PersistentAuthenticationStateProvider>(); + builder.Services.AddAuthenticationStateDeserialization();
Zie Wat is er nieuw in ASP.NET Core 9.0voor meer informatie.
Streaming-renderingkenmerk vereist niet langer de parameter true
In .NET 8 vereist streaming-rendering dat u true
doorgeeft voor de parameter enabled
.
@attribute [StreamRendering(true)]
In .NET 9 of hoger kan true
desgewenst worden verwijderd, omdat true
nu de standaardwaarde is voor de parameter enabled
:
@attribute [StreamRendering]