Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье объясняется, как обновить 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 вспомогательные функции тегов скриптов и ссылок автоматически разрешают отпечатанные имена файлов.
Чтобы устранить отпечатанные отпечатки имен файлов при импорте модулей JavaScript, добавьте созданную карту импорта:
В Blazor приложениях добавьте компонент ImportMap (
<head>) в содержимое корневого компонента приложения, как правило, вAppкомпоненте (App.razor):<ImportMap />В приложениях MVC и Razor pages добавьте
<script type="importmap"></script>в голову основного файла макета, который обновляется вспомогательным средством тега импорта карты.
Дополнительные сведения см. в следующих ресурсах:
Blazor
Внедрение упрощенной сериализации состояния проверки подлинности для Blazor Web Apps
Blazor Web Appпри необходимости можно применить упрощенную сериализацию состояния проверки подлинности.
В серверном проекте:
Удалите поставщика состояния сохраняемой проверки подлинности (
PersistingAuthenticationStateProvider.cs).Удалите регистрацию службы из
Programфайла. Вместо этого выполните цепочку вызовов:AddAuthenticationStateSerializationAddRazorComponents- 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 потоковой отрисовки
@attribute [StreamRendering(true)]
В .NET 9 или более поздней версии true можно удалить, так как true теперь используется по умолчанию для параметра enabled:
@attribute [StreamRendering]
Кардинальные изменения
Используйте статьи в статье Критические изменения в .NET, чтобы найти критические изменения , которые могут применяться при обновлении приложения до более новой версии .NET.
ASP.NET Core