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
Visual Studio 2022 Preview mit der Workload ASP.NET- und Webentwicklung
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.cs
verketten. 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 NamespaceBlazorSample
einer App) in einer Stammkomponente verknüpft, in der Regel dieApp
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 derApp
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.