다음을 통해 공유


.NET 8의 ASP.NET Core에서 .NET 9의 ASP.NET Core로 마이그레이션

이 문서에서는 .NET 8의 ASP.NET Core를 .NET 9의 ASP.NET Core로 업데이트하는 방법을 설명합니다.

필수 조건

에서 .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으로 업그레이드할 때 적용할 수 있는 호환성이 손상되는 변경 내용을 찾을 수 있습니다.