Condividi tramite


Eseguire la migrazione da ASP.NET Core in .NET 8 a ASP.NET Core in .NET 9

Questo articolo illustra come aggiornare un ASP.NET Core in .NET 8 a ASP.NET Core in .NET 9.

Prerequisiti

Aggiornare la versione di .NET SDK in global.json

Se si fa affidamento su un global.json file per specificare una versione specifica di .NET Core SDK, aggiornare la version proprietà alla versione di .NET 9.0 SDK installata. Ad esempio:

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

Aggiornare il framework di destinazione

Aggiornare il moniker del framework di destinazione del file di progetto (TFM) a net9.0:

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

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

</Project>

Aggiornare i riferimenti del pacchetto

Nel file di progetto aggiornare ogni Microsoft.AspNetCore.*attributo del Microsoft.EntityFrameworkCore.*riferimento Microsoft.Extensions.* al pacchetto , System.Net.Http.Json, e Version alla versione 9.0.0 o successiva. Ad esempio:

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

Sostituire UseStaticFiles con MapStaticAssets

Ottimizzare la gestione dei file statici nelle app Web sostituendo UseStaticFiles con MapStaticAssets nel file dell'app Program :

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

Nelle app MVC & Razor Pages è anche necessario concatenare una chiamata a .WithStaticAssets dopo MapRazorPages o MapControllerRoute in Program.cs. Per un esempio, vedere i file statici in ASP.NET Core.

ASP.NET Core esegue automaticamente le impronte digitali e precomprime i file statici in fase di compilazione e pubblicazione e quindi MapStaticAssets espone i file ottimizzati come endpoint usando il routing degli endpoint con le intestazioni di memorizzazione nella cache appropriate.

Per risolvere i nomi di file con impronta digitale dall'app:

  • Nelle Blazor app usare la ComponentBase.Assets proprietà . Aggiornare i riferimenti espliciti agli asset statici nei Razor file di componente (.razor) per usare @Assets["{ASSET PATH}"], dove il {ASSET PATH} segnaposto è il percorso dell'asset. Si noti che questa operazione NON deve essere eseguita per gli script del Blazor framework (blazor.*.js). Nell'esempio seguente Bootstrap, il Blazor foglio di stile dell'app modello di progetto (app.css) e il foglio di stile di isolamento CSS (in base allo spazio dei nomi di un'app di BlazorSample) sono collegati in un componente radice, in genere il App componente (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"]" />
    
  • Nelle app MVC & Razor Pages, gli helper tag di script e collegamento risolveranno automaticamente i nomi dei file con impronta digitale.

Per risolvere i nomi di file con impronta digitale durante l'importazione di moduli JavaScript, aggiungere una mappa di importazione generata:

  • Nelle Blazor app aggiungere il componente (ImportMap) al <head> contenuto del componente radice dell'app, in genere nel App componente (App.razor):

    <ImportMap />
    
  • Nelle app MVC e Razor pagine aggiungere <script type="importmap"></script> all'inizio del file di layout principale, che viene aggiornato dall'helper Importa tag mappa.

Per ulteriori informazioni, vedi le seguenti risorse:

Blazor

Adottare la serializzazione semplificata dello stato di autenticazione per Blazor Web Apps

Blazor Web Apps può facoltativamente adottare la serializzazione semplificata dello stato di autenticazione.

Nel progetto server:

  • Rimuovere il provider di stato di autenticazione persistente (PersistingAuthenticationStateProvider.cs).

  • Rimuovere la registrazione del Program servizio dal file. Concatenare invece una chiamata a su AddAuthenticationStateSerializationAddRazorComponents:

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

L'API serializza solo il nome lato server e le attestazioni del ruolo per l'accesso nel browser. Per includere tutte le attestazioni, impostare su SerializeAllClaimstrue:

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

Nel progetto client (.Client):

  • Rimuovere il provider di stato di autenticazione persistente (PersistentAuthenticationStateProvider.cs).

  • Rimuovere la registrazione del Program servizio dal file. Chiamare AddAuthenticationStateDeserialization invece sulla raccolta di servizi:

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

Per altre informazioni, vedere Novità di ASP.NET Core 9.0.

L'attributo di rendering di streaming non richiede più il parametro true

In .NET 8 necessario passare true per il parametro enabled:

@attribute [StreamRendering(true)]

In .NET 9 o versione successiva è possibile rimuovere true facoltativamente, perché true è ora l'impostazione predefinita per il parametro enabled:

@attribute [StreamRendering]

Risorse aggiuntive