Dela via


Migrera från ASP.NET Core i .NET 8 till ASP.NET Core i .NET 9

Den här artikeln beskriver hur du uppdaterar en ASP.NET Core i .NET 8 till ASP.NET Core i .NET 9.

Prerequisites

Uppdatera .NET SDK-versionen i global.json

Om du förlitar dig på en global.json fil för att rikta in dig på en specifik .NET SDK-version uppdaterar version du egenskapen till den .NET 9 SDK-version som är installerad. Till exempel:

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

Uppdatera målramverket

Uppdatera projektfilens Target Framework Moniker (TFM) till net9.0:

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

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

</Project>

Uppdatera paketreferenser

I projektfilen uppdaterar du attributet för varje Microsoft.AspNetCore.*, Microsoft.EntityFrameworkCore.*, Microsoft.Extensions.*och System.Net.Http.Json paketreferens Version till 9.0.0 eller senare. Till exempel:

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

Ersätt UseStaticFiles med MapStaticAssets

Optimera hanteringen av statiska filer i dina webbappar genom att UseStaticFiles ersätta med MapStaticAssets i appens Program fil:

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

I MVC- och Razor Pages-appar behöver du dessutom länka ett anrop till .WithStaticAssets efter MapRazorPages eller MapControllerRoute i Program.cs. Ett exempel finns i Statiska filer i ASP.NET Core.

ASP.NET Core fingeravtrycker och förkomprimerar automatiskt dina statiska filer vid bygg- och publiceringstillfälle och använder sedan MapStaticAssets slutpunktsroutning för att visa de optimerade filerna som slutpunkter med lämpliga cachehuvuden.

Så här löser du filnamnen med fingeravtryck från din app:

  • Använd Blazor egenskapen i ComponentBase.Assets appar. Uppdatera explicita referenser till statiska tillgångar i Razor komponentfiler (.razor) för att använda @Assets["{ASSET PATH}"], där {ASSET PATH} platshållaren är sökvägen till tillgången. Observera att detta INTE bör göras för ramverksskripten Blazor (blazor.*.js). I följande exempel är Bootstrap, Blazor-projektmallens appformatmall (app.css) och CSS-isoleringsformatmallen (baserat på en apps namnområde BlazorSample) länkade i en rotkomponent, vanligtvis den App komponenten (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"]" />
    
  • I MVC & Pages-appar kommer hjälpverktygen för skript- och länktaggar automatiskt att tilldela filnamn med unika identifierare.

Lös filnamnen med fingeravtryck när du importerar JavaScript-moduler genom att lägga till en genererad importkarta:

  • I Blazor appar lägger du till komponenten (ImportMap) till innehållet i appens rotkomponent, oftast i <head> komponenten (App):

    <ImportMap />
    
  • Lägg till Razor i huvudsektionen i huvudlayoutfilen för MVC- och <script type="importmap"></script>-sidappar, som uppdateras av Importkarta-taghjälparen.

Mer information finns i följande resurser:

Blazor

Implementera förenklad serialisering av autentiseringstillstånd för Blazor Web Apps

Blazor Web Apps kan eventuellt införa förenklad serialisering av autentiseringstillstånd.

I serverprojektet:

  • Ta bort den persistenta autentiseringstillståndsprovidern (PersistingAuthenticationStateProvider.cs).

  • Ta bort registreringen av tjänsten från Program-filen. Länka i stället ett anrop till AddAuthenticationStateSerializationAddRazorComponents:

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

API:et serialiserar endast serversidans namn och rollanspråk för åtkomst i webbläsaren. Om du vill inkludera alla anspråk anger du SerializeAllClaims till true:

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

I kundprojektet (.Client):

  • Ta bort providern för beständiga autentiseringstillstånd (PersistentAuthenticationStateProvider.cs).

  • Ta bort registreringen av tjänsten från Program-filen. Anropa AddAuthenticationStateDeserialization i stället tjänstsamlingen:

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

Mer information finns i Nyheter i ASP.NET Core i .NET 9.

Renderingsattribut för direktuppspelning kräver inte längre parametern true

I .NET 8 krävde strömningsrendering att du skulle skicka true för parametern enabled :

@attribute [StreamRendering(true)]

I .NET 9 eller senare kan true valfritt tas bort, eftersom true nu är standard för parametern enabled.

@attribute [StreamRendering]

Brytande förändringar

Använd artiklarna i Icke-bakåtkompatibla ändringar i .NET för att hitta icke-bakåtkompatibla ändringar som kan gälla när du uppgraderar en app till en nyare version av .NET.