Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье объясняется, как обновить ASP.NET Core в .NET 8 до ASP.NET Core в .NET 9.
Предпосылки
Visual Studio 2022 с рабочей нагрузкой ASP.NET и разработка веб-приложений.
Обновление версии пакета SDK для .NET в global.json
Если вы используете global.json файл для целевой версии SDK для .NET, обновите свойство version до установленной версии SDK для .NET 9. Рассмотрим пример.
{
"sdk": {
- "version": "8.0.100"
+ "version": "9.0.100"
}
}
Обновление целевой платформы
Обновите идентификатор целевой платформы (TFM) в файле проекта на:net9.0
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
- <TargetFramework>net8.0</TargetFramework>
+ <TargetFramework>net9.0</TargetFramework>
</PropertyGroup>
</Project>
Обновление ссылок на пакеты
В файле проекта обновите атрибут Microsoft.AspNetCore.* каждой ссылки на пакет Microsoft.EntityFrameworkCore.*, Microsoft.Extensions.*, System.Net.Http.Json и Version до версии 9.0.0 или более поздней. Рассмотрим пример.
<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>
Замените UseStaticFiles на MapStaticAssets.
Оптимизируйте обработку статических файлов в веб-приложениях, заменив UseStaticFiles его MapStaticAssets в файле приложения Program :
- app.UseStaticFiles();
+ app.MapStaticAssets();
В приложениях MVC и Razor Pages вам также нужно добавить в цепочку вызов .WithStaticAssets после MapRazorPages или MapControllerRoute в Program.cs. Пример см. в статических файлах в ASP.NET Core.
ASP.NET Core автоматически отпечатывает и предварительно сжимает статические файлы во время сборки и публикации, а затем MapStaticAssets создает оптимизированные файлы в качестве конечных точек, используя маршрутизацию конечных точек с соответствующими заголовками кэширования.
Чтобы обработать имена файлов с хешем в вашем приложении:
В Blazor приложениях используйте свойство ComponentBase.Assets. Обновите явные ссылки на статические ресурсы в файлах компонентов Razor (
.razor) так, чтобы использовался@Assets["{ASSET PATH}"], где заполнитель{ASSET PATH}обозначает путь к ресурсу. Обратите внимание, что этого НЕ следует делать для Blazor скриптов платформы (blazor.*.js). В следующем примере Bootstrap, Blazor стилевой файл шаблона проекта (app.css) и стилевой файл изоляции CSS (на основе пространства имен приложенияBlazorSample) связаны как в корневом компоненте, как правило,Appкомпонент (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"]" />В приложениях MVC и Razor Pages вспомогательные элементы тегов script и link автоматически определяют имена файлов с отпечатком.
Чтобы устранить отпечатанные отпечатки имен файлов при импорте модулей JavaScript, добавьте созданную карту импорта:
В приложениях Blazor добавьте компонент (ImportMap) в содержимое
<head>корневого компонента приложения, обычно в компонентеApp(App.razor):<ImportMap />В приложениях MVC и приложениях со страницами Razor добавьте
<script type="importmap"></script>в раздел head основного файла макета, который обновляется вспомогательным компонентом тегов Import Map.
Дополнительные сведения см. в следующих ресурсах:
Blazor
Использовать упрощенную сериализацию состояния аутентификации для Blazor Web Apps
Blazor Web Appпри необходимости можно применить упрощенную сериализацию состояния проверки подлинности.
В серверном проекте:
Удалите поставщика постоянного состояния аутентификации (
PersistingAuthenticationStateProvider.cs).Удалите регистрацию службы из
Programфайла. Вместо этого добавьте вызов AddAuthenticationStateSerialization в цепочку вызовов для AddRazorComponents:- builder.Services.AddScoped<AuthenticationStateProvider, PersistingAuthenticationStateProvider>(); builder.Services.AddRazorComponents() .AddInteractiveServerComponents() .AddInteractiveWebAssemblyComponents() + .AddAuthenticationStateSerialization();
API сериализует только серверные данные о именах и ролях для доступа в браузере. Чтобы включить все требования, установите SerializeAllClaims на true:
.AddAuthenticationStateSerialization(options => options.SerializeAllClaims = true);
В клиентском проекте (.Client):
Удалите поставщик постоянного состояния проверки подлинности (
PersistentAuthenticationStateProvider.cs).Удалите регистрацию службы из
Programфайла. Вместо этого вызовите AddAuthenticationStateDeserialization для коллекции служб:- builder.Services.AddSingleton<AuthenticationStateProvider, PersistentAuthenticationStateProvider>(); + builder.Services.AddAuthenticationStateDeserialization();
Дополнительные сведения см. в статье "Новые возможности" ASP.NET Core в .NET 9.
Атрибут потоковой отрисовки больше не требует параметра true
В .NET 8 для потокового рендеринга требовалось передать true в параметр enabled:
@attribute [StreamRendering(true)]
В .NET 9 или более поздней версии true можно удалить, так как true теперь используется по умолчанию для параметра enabled:
@attribute [StreamRendering]
Кардинальные изменения
Используйте статьи в статье Критические изменения в .NET, чтобы найти критические изменения , которые могут применяться при обновлении приложения до более новой версии .NET.
ASP.NET Core