이 문서에서는 .NET 8의 ASP.NET Core를 .NET 9의 ASP.NET Core로 업데이트하는 방법을 설명합니다.
필수 조건
ASP.NET 및 웹 개발 워크로드가 있는 Visual Studio 2022.
에서 .NET SDK 버전 업데이트 global.json
설치된 .NET 9 SDK 버전으로 global.json 속성을 업데이트하려면 특정 .NET SDK 버전을 대상으로 하는 version 파일을 사용하십시오. 다음은 그 예입니다.
{
"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 바꾸기
앱의 파일로 대체 UseStaticFilesMapStaticAssets 하여 웹앱의 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 프로젝트 템플릿 앱 스타일시트(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 페이지 앱에서 기본 레이아웃 파일의 헤드에 추가
<script type="importmap"></script>합니다. 이 파일은 맵 태그 가져오기 도우미에 의해 업데이트됩니다.
자세한 내용은 다음 리소스를 참조하세요.
Blazor
s에 대해 간소화된 인증 상태 serialization 채택 Blazor Web App
Blazor Web Apps는 필요에 따라 간소화된 인증 상태 serialization을 채택 할 수 있습니다.
서버 프로젝트에서 다음을 수행합니다.
지속형 인증 상태 공급자(
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();
자세한 내용은 .NET 9의 ASP.NET Core의 새로운 기능입니다.
스트리밍 렌더링 특성에 더 이상 true 매개 변수가 필요하지 않습니다.
.NET 8에서 스트리밍 렌더링true 매개 변수에 대한 enabled 전달해야 했습니다.
@attribute [StreamRendering(true)]
.NET 9 이상에서는 true 이제 true 매개 변수의 기본값이므로 enabled 선택적으로 제거할 수 있습니다.
@attribute [StreamRendering]
파괴적 변경
.NET의 호환성이 손상되는 변경에 대한 문서를 사용하여 앱을 최신 버전의 .NET으로 업그레이드할 때 적용할 수 있는 호환성이 손상되는 변경 내용을 찾을 수 있습니다.
ASP.NET Core