Freigeben über


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 der .NET SDK-Version in global.json

Wenn Sie eine global.json-Datei für eine bestimmte .NET Core SDK-Version verwenden, aktualisieren Sie die version-Eigenschaft auf die installierte .NET 9.0 SDK-Version. Beispiel:

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

Aktualisieren des Zielframeworks

Aktualisieren Sie den Zielframeworkmoniker (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 Version-Attribut jedes Paketverweises vom Typ Microsoft.AspNetCore.*, Microsoft.EntityFrameworkCore.*, Microsoft.Extensions.* und System.Net.Http.Json auf 9.0.0 oder höher. Zum 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 Behandlung statischer Dateien in Ihren Web-Apps, indem Sie sie in der App-Datei Program ersetzen UseStaticFiles MapStaticAssets:

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

In MVC & Razor Pages-Apps müssen Sie zusätzlich einen Aufruf nach .WithStaticAssets MapRazorPages oder MapControllerRoute in Program.csverketten. Ein Beispiel finden Sie in den statischen Dateien in ASP.NET Core.

ASP.NET Core automatisch Fingerabdrücke und prekomprimiert Ihre statischen Dateien zur Build- und Veröffentlichungszeit und zeigt dann MapStaticAssets die optimierten Dateien als Endpunkte mithilfe von Endpunktrouting mit entsprechenden Cacheheadern an.

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 Objekte in Razor Komponentendateien (.razor) so @Assets["{ASSET PATH}"], dass der Platzhalter der {ASSET PATH} Pfad zur Ressource ist. Beachten Sie, dass dies nicht für die Blazor Frameworkskripts (blazor.*.js) erfolgen sollte. Im folgenden Beispiel werden Bootstrap, das Stylesheet der Projektvorlagen-App (app.css) und das CSS-Isolations-Stylesheet (basierend auf dem Namespace BlazorSampleeiner App) in einer Stammkomponente verknüpft, in der Regel die App Komponente (Components/App.razor):Blazor

    <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 Linktag-Hilfsprogramme automatisch die fingerabdruckierten 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 <script type="importmap"></script> in MVC & Razor Pages-Apps dem Kopf der Hauptlayoutdatei hinzu, die von der Importzuordnungstag-Hilfsprogramm aktualisiert wird.

Weitere Informationen finden Sie in den folgenden Ressourcen:

Blazor

Vereinfachte Serialisierung des Authentifizierungszustands für Blazor Web Apps übernehmen

Blazor Web Apps kann optional eine vereinfachte Serialisierung des Authentifizierungszustands übernehmen.

Im Serverprojekt:

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

  • Entfernen Sie die Dienstregistrierung aus der Program Datei. Verketten Sie stattdessen einen Anruf an AddAuthenticationStateSerialization 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 einzuschließen, legen Sie folgendes festSerializeAllClaims: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 AddAuthenticationStateDeserialization stattdessen die Dienstsammlung auf:

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

Weitere Informationen finden Sie unter Neuerungen bei ASP.NET Core 9.0.

Zusätzliche Ressourcen