Migrieren von ASP.NET Core in .NET 8 zu ASP.NET Core in .NET 9

In diesem Artikel wird erläutert, wie Sie ein ASP.NET Core in .NET 8 auf ASP.NET Core in .NET 9 aktualisieren.

Voraussetzungen

Aktualisieren Sie die .NET SDK-Version in global.json

Wenn Sie auf eine global.json Datei angewiesen sind, um eine bestimmte .NET SDK-Version zu verwenden, aktualisieren Sie die version Eigenschaft auf die .NET 9 SDK-Version, die installiert ist. Beispiel:

{
  "sdk": {
-    "version": "8.0.100"
+    "version": "9.0.100"
  }
}

Aktualisieren des Zielframeworks

Aktualisieren Sie das Target Framework Moniker (TFM) der Projektdatei auf net9.0:

<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
-    <TargetFramework>net8.0</TargetFramework>
+    <TargetFramework>net9.0</TargetFramework>
  </PropertyGroup>

</Project>

Aktualisieren von Paketverweisen

Aktualisieren Sie in der Projektdatei das Microsoft.AspNetCore.*-Attribut jedes Paketverweises vom Typ Microsoft.EntityFrameworkCore.*, Microsoft.Extensions.*, System.Net.Http.Json und Version auf 9.0.0 oder höher. Beispiel:

<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>

Ersetzen Sie UseStaticFiles durch MapStaticAssets.

Optimieren Sie die Verarbeitung statischer Dateien in Ihren Web-Apps, indem Sie UseStaticFiles durch MapStaticAssets in der Datei Program der App ersetzen:

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

In MVC & Razor Pages-Apps müssen Sie zusätzlich nach .WithStaticAssets oder MapRazorPages in MapControllerRoute einen Aufruf von Program.cs anhängen. Ein Beispiel finden Sie in den Serve Static Files in ASP.NET Core Apps.

ASP.NET Core versieht Ihre statischen Dateien beim Erstellen und Veröffentlichen automatisch mit Fingerabdrücken und führt eine Vorkomprimierung durch. Danach stellt MapStaticAssets die optimierten Dateien mithilfe von Endpunktrouting und geeigneten Cachingheadern als Endpunkte bereit.

So lösen Sie die fingerabdruckierten Dateinamen aus Ihrer App auf:

  • Verwenden Sie in Blazor Apps die ComponentBase.Assets Eigenschaft. Aktualisieren Sie explizite Verweise auf statische Assets in Razor-Komponentendateien (.razor), sodass @Assets["{ASSET PATH}"] verwendet wird, wobei der Platzhalter {ASSET PATH} für den Pfad zum Asset steht. Beachten Sie, dass dies nicht für die Blazor Frameworkskripts (blazor.*.js) erfolgen sollte. Im folgenden Beispiel werden Bootstrap, das Stylesheet der Projektvorlagen-App (Blazor) und das app.css (basierend auf dem Namespace einer App) in einer Stammkomponente verknüpft, in der Regel die BlazorSample Komponente (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"]" />
    
  • In MVC &Razor Pages-Apps lösen die Skript- und Link-Tag-Hilfen automatisch die mit Fingerabdruck versehenen Dateinamen auf.

Um die fingerabdruckierten Dateinamen beim Importieren von JavaScript-Modulen aufzulösen, fügen Sie eine generierte Importzuordnung hinzu:

  • Blazor Fügen Sie in Apps die (ImportMap) Komponente zum <head> Inhalt der Stammkomponente der App hinzu, in der Regel in der App Komponente (App.razor):

    <ImportMap />
    
  • Fügen Sie in MVC & Razor Pages-Apps <script type="importmap"></script> im Kopfbereich der Hauptlayoutdatei hinzu, die von der Importzuordnungs-Tag-Hilfe aktualisiert wird.

Weitere Informationen finden Sie in den folgenden Ressourcen:

Blazor

Vereinfachte Serialisierung des Authentifizierungszustands für Blazor Web Apps einführen

Blazor Web Apps können optional eine vereinfachte Serialisierung des Authentifizierungsstatus nutzen.

Im Serverprojekt:

  • Entfernen Sie den Persistenting Authentication State Provider (PersistingAuthenticationStateProvider.cs).

  • Entfernen Sie die Dienstregistrierung aus der Program Datei. Verketten Sie stattdessen einen Aufruf von AddAuthenticationStateSerialization für AddRazorComponents:

    - builder.Services.AddScoped<AuthenticationStateProvider, PersistingAuthenticationStateProvider>();
    
      builder.Services.AddRazorComponents()
          .AddInteractiveServerComponents()
          .AddInteractiveWebAssemblyComponents()
    +     .AddAuthenticationStateSerialization();
    

Die API serialisiert nur die serverseitigen Namens- und Rollenansprüche für den Zugriff im Browser. Um alle Ansprüche einzubeziehen, setzen Sie SerializeAllClaims auf true:

.AddAuthenticationStateSerialization(options => options.SerializeAllClaims = true);

Im Clientprojekt (.Client):

  • Entfernen Sie den Anbieter für beständigen Authentifizierungsstatus (PersistentAuthenticationStateProvider.cs).

  • Entfernen Sie die Dienstregistrierung aus der Program Datei. Rufen Sie stattdessen AddAuthenticationStateDeserialization für die Dienstesammlung auf:

    - builder.Services.AddSingleton<AuthenticationStateProvider, PersistentAuthenticationStateProvider>();
    + builder.Services.AddAuthenticationStateDeserialization();
    

Weitere Informationen finden Sie unter Neuigkeiten in ASP.NET Core in .NET 9.

Für das Streamingrendering-Attribut ist der true Parameter nicht mehr erforderlich.

In .NET 8 mussten Sie beim Streamingrenderingtrue für den Parameterenabled übergeben:

@attribute [StreamRendering(true)]

In .NET 9 oder höher kann true optional entfernt werden, da true jetzt die Standardeinstellung für den Parameter enabled ist.

@attribute [StreamRendering]

Bahnbrechende Änderungen

Verwenden Sie die Artikel in "Breaking changes in .NET ", um nach wichtigen Änderungen zu suchen, die beim Aktualisieren einer App auf eine neuere Version von .NET gelten können.