Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье объясняется, как обновить ASP.NET Core в .NET 8 до ASP.NET Core в .NET 9.
Необходимые компоненты
Visual Studio 2022 с рабочей нагрузкой ASP.NET и веб-разработки.
Обновление версии пакета SDK для .NET в global.json
Если вы используете global.json
файл для конкретной версии пакета SDK для .NET Core, обновите version
свойство до установленной версии пакета SDK для .NET 9.0. Например:
{
"sdk": {
- "version": "8.0.100"
+ "version": "9.0.100"
}
}
Обновление целевой платформы
Обновите moniker целевой платформы проекта (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
). В следующем примере Начальная загрузка, 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 9.0.
Атрибут потоковой отрисовки больше не требует параметра true
В .NET 8 потоковой отрисовки
@attribute [StreamRendering(true)]
В .NET 9 или более поздней версии true
можно удалить, так как true
теперь используется по умолчанию для параметра enabled
:
@attribute [StreamRendering]
Дополнительные ресурсы
ASP.NET Core