Delen via


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

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 van BlazorSample) gekoppeld aan een hoofdonderdeel, meestal het App 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 het App 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]

Aanvullende informatiebronnen