Udostępnij za pośrednictwem


Migrowanie z platformy ASP.NET Core na platformie .NET 8 do platformy ASP.NET Core na platformie .NET 9

W tym artykule wyjaśniono, jak zaktualizować platformę ASP.NET Core na platformie .NET 8 do ASP.NET Core na platformie .NET 9.

Wymagania wstępne

Aktualizowanie wersji zestawu .NET SDK w programie global.json

Jeśli korzystasz z global.json pliku przeznaczonego dla określonej wersji zestawu .NET Core SDK, zaktualizuj version właściwość do zainstalowanej wersji zestawu .NET 9.0 SDK. Na przykład:

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

Aktualizowanie platformy docelowej

Zaktualizuj plik projektu Target Framework Moniker (TFM) na net9.0:

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

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

</Project>

Aktualizowanie odwołań do pakietów

W pliku projektu zaktualizuj atrybut odwołania Version do pakietu Microsoft.AspNetCore.*, Microsoft.EntityFrameworkCore.*, Microsoft.Extensions.*i System.Net.Http.Json do wersji 9.0.0 lub nowszej. Na przykład:

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

Zastąp ciąg UseStaticFiles ciągiem MapStaticAssets

Zoptymalizuj obsługę plików statycznych w aplikacjach internetowych, zastępując element UseStaticFiles w MapStaticAssets pliku aplikacji Program :

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

W aplikacjach MVC & Razor Pages należy dodatkowo połączyć wywołanie z elementem .WithStaticAssets po MapRazorPages lub MapControllerRoute w elem.Program.cs Aby zapoznać się z przykładem, zobacz pliki statyczne w programie ASP.NET Core.

ASP.NET Core automatycznie odciski palców i prekompresuje pliki statyczne w czasie kompilacji i publikowania, a następnie MapStaticAssets wyświetla zoptymalizowane pliki jako punkty końcowe przy użyciu routingu punktu końcowego z odpowiednimi nagłówkami buforowania.

Aby rozpoznać nazwy plików odcisków palców z aplikacji:

  • W Blazor aplikacjach użyj ComponentBase.Assets właściwości . Zaktualizuj jawne odwołania do zasobów statycznych w Razor plikach składników (.razor), aby użyć @Assets["{ASSET PATH}"]elementu , gdzie {ASSET PATH} symbol zastępczy jest ścieżką do zasobu. Należy pamiętać, że nie należy tego robić dla Blazor skryptów platformy (blazor.*.js). W poniższym przykładzie bootstrap, Blazor arkusz stylów aplikacji szablonu projektu (app.css) i arkusz stylów izolacji CSS (na podstawie przestrzeni nazw BlazorSampleaplikacji ) są połączone w składniku głównym, zazwyczaj App składnik (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"]" />
    
  • W aplikacjach MVC & Razor Pages pomocnicy skryptu i tagów linków automatycznie rozpoznają nazwy plików odcisków palców.

Aby rozpoznać nazwy plików odcisków palców podczas importowania modułów Języka JavaScript, dodaj wygenerowaną mapę importu:

  • W Blazor aplikacjach dodaj składnik (ImportMap) do <head> zawartości składnika głównego aplikacji, zazwyczaj w składniku App (App.razor):

    <ImportMap />
    
  • W aplikacjach MVC i Razor stron dodaj <script type="importmap"></script> do nagłówka głównego pliku układu, który jest aktualizowany przez Pomocnik tagu mapy importu.

Aby uzyskać więcej informacji, zobacz następujące zasoby:

Blazor

Wdrażanie uproszczonej serializacji stanu uwierzytelniania dla s Blazor Web App

Blazor Web AppS może opcjonalnie przyjąć uproszczoną serializacji stanu uwierzytelniania.

W projekcie serwera:

  • Usuń utrwalającego dostawcę stanu uwierzytelniania (PersistingAuthenticationStateProvider.cs).

  • Usuń rejestrację usługi z Program pliku. Zamiast tego utwórz łańcuch wywołań do polecenia w lokalizacji AddAuthenticationStateSerialization :AddRazorComponents

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

Interfejs API serializuje tylko nazwę po stronie serwera i oświadczenia roli w celu uzyskania dostępu w przeglądarce. Aby uwzględnić wszystkie oświadczenia, ustaw wartość SerializeAllClaims :true

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

W projekcie klienta (.Client):

  • Usuń dostawcę stanu uwierzytelniania trwałego (PersistentAuthenticationStateProvider.cs).

  • Usuń rejestrację usługi z Program pliku. Zamiast tego wywołaj AddAuthenticationStateDeserialization kolekcję usług:

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

Aby uzyskać więcej informacji, zobacz Co nowego w programie ASP.NET Core 9.0.

Dodatkowe zasoby