ASP.NET Core 9.0의 새로운 기능
이 문서에서는 ASP.NET Core 9.0의 가장 중요한 변경 내용과 관련 설명서에 대한 링크를 강조 표시합니다.
이 문서는 .NET 9 미리 보기 3용으로 업데이트되었습니다.
Blazor
이 섹션에서는 .에 대한 새로운 기능에 대해 설명합니다 Blazor.
생성자 주입
Razor 구성 요소는 생성자 주입을 지원합니다.
다음 예제에서 부분(코드 숨김) 클래스는 기본 생성자를 사용하여 서비스를 삽입합니다NavigationManager
.
public partial class ConstructorInjection(NavigationManager navigation)
{
protected NavigationManager Navigation { get; } = navigation;
}
자세한 내용은 ASP.NET Core Blazor 종속성 주입을 참조하세요.
대화형 서버 구성 요소에 대한 Websocket 압축
기본적으로 대화형 서버 구성 요소는 WebSocket 연결에 대한 압축을 사용하도록 설정하고 CSP(콘텐츠 보안 정책) 지시문으로 설정합니다'self'
frame-ancestors
. 이 지시문은 압축을 사용하도록 설정하거나 WebSocket 컨텍스트에 대한 구성이 제공될 때 앱이 제공되는 원본에만 앱을 포함 <iframe>
할 수 있도록 허용합니다.
압축을 설정하여 사용하지 않도록 설정할 ConfigureWebSocketOptions
수 있습니다. 그러면 공격할 null
앱의 취약성이 줄어들지만 성능이 저하될 수 있습니다.
.AddInteractiveServerRenderMode(o => o.ConfigureWebSocketOptions = null)
WebSocket 압축을 허용하지만 브라우저가 앱을 포함할 수 없도록 하는 값 'none'
(작은따옴표 필요)으로 <iframe>
더 frame-ancestors
엄격한 CSP를 구성합니다.
.AddInteractiveServerRenderMode(o => o.ContentSecurityFrameAncestorsPolicy = "'none'")
자세한 내용은 다음 리소스를 참조하세요.
에서 키보드 컴퍼지션 이벤트 처리 Blazor
새 KeyboardEventArgs.IsComposing
속성은 키보드 이벤트가 컴퍼지션 세션의 일부인지를 나타냅니다. 키보드 이벤트의 컴퍼지션 상태를 추적하는 것은 국제 문자 입력 메서드를 처리하는 데 매우 중요합니다.
SignalR
이 섹션에서는 .에 대한 새로운 기능에 대해 설명합니다 SignalR.
허브의 SignalR 다형 형식 지원
이제 허브 메서드는 파생 클래스 대신 기본 클래스를 수락하여 다형 시나리오를 사용하도록 설정할 수 있습니다. 다형성을 허용하려면 기본 형식에 주석을 추가해야 합니다.
public class MyHub : Hub
{
public void Method(JsonPerson person)
{
if (person is JsonPersonExtended)
{
}
else if (person is JsonPersonExtended2)
{
}
else
{
}
}
}
[JsonPolymorphic]
[JsonDerivedType(typeof(JsonPersonExtended), nameof(JsonPersonExtended))]
[JsonDerivedType(typeof(JsonPersonExtended2), nameof(JsonPersonExtended2))]
private class JsonPerson
{
public string Name { get; set; }
public Person Child { get; set; }
public Person Parent { get; set; }
}
private class JsonPersonExtended : JsonPerson
{
public int Age { get; set; }
}
private class JsonPersonExtended2 : JsonPerson
{
public string Location { get; set; }
}
최소 API
이 섹션에서는 최소 API에 대한 새로운 기능에 대해 설명합니다.
추가 InternalServerError
및 InternalServerError<TValue>
TypedResults
이 TypedResults 클래스는 최소 API에서 강력한 형식의 HTTP 상태 코드 기반 응답을 반환하는 데 유용한 수단입니다. TypedResults
이제 엔드포인트에서 "500 내부 서버 오류" 응답을 반환하기 위한 팩터리 메서드 및 형식이 포함됩니다. 다음은 500 응답을 반환하는 예제입니다.
var app = WebApplication.Create();
app.MapGet("/", () => TypedResults.InternalServerError("Something went wrong!"));
app.Run();
인증 및 권한 부여
이 섹션에서는 인증 및 권한 부여를 위한 새로운 기능에 대해 설명합니다.
OIDC 및 OAuth 매개 변수 사용자 지정
이제 OAuth 및 OIDC 인증 처리기에는 AdditionalAuthorizationParameters
일반적으로 리디렉션 쿼리 문자열의 일부로 포함된 권한 부여 메시지 매개 변수를 보다 쉽게 사용자 지정할 수 있는 옵션이 제공됩니다. .NET 8 이전 버전에서는 사용자 지정 처리기에서 사용자 지정 OnRedirectToIdentityProvider 콜백 또는 재정의된 BuildChallengeUrl 메서드가 필요합니다. 다음은 .NET 8 코드의 예입니다.
builder.Services.AddAuthentication().AddOpenIdConnect(options =>
{
options.Events.OnRedirectToIdentityProvider = context =>
{
context.ProtocolMessage.SetParameter("prompt", "login");
context.ProtocolMessage.SetParameter("audience", "https://api.example.com");
return Task.CompletedTask;
};
});
이제 앞의 예제를 다음 코드로 간소화할 수 있습니다.
builder.Services.AddAuthentication().AddOpenIdConnect(options =>
{
options.AdditionalAuthorizationParameters.Add("prompt", "login");
options.AdditionalAuthorizationParameters.Add("audience", "https://api.example.com");
});
HTTP.sys 확장 인증 플래그 구성
이제 HTTP.sys 새 EnableKerberosCredentialCaching
속성과 속성을 사용하여 플래그를 구성 HTTP_AUTH_EX_FLAG_ENABLE_KERBEROS_CREDENTIAL_CACHING
하고 HTTP_AUTH_EX_FLAG_CAPTURE_CREDENTIAL
CaptureCredentials
HTTP.sys AuthenticationManager Windows 인증 처리 방법을 최적화할 수 있습니다. 예시:
webBuilder.UseHttpSys(options =>
{
options.Authentication.Schemes = AuthenticationSchemes.Negotiate;
options.Authentication.EnableKerberosCredentialCaching = true;
options.Authentication.CaptureCredentials = true;
});
기타
다음 섹션에서는 기타 새로운 기능에 대해 설명합니다.
개발자 예외 페이지의 엔드포인트 메타데이터
MVC 작업, 최소 API 및 gRPC 메서드에 추가된 특성은 엔드포인트 메타데이터의 예입니다. ASP.NET Core는 엔드포인트 메타데이터를 사용하여 라우팅, 인증 및 권한 부여, 응답 캐싱, 속도 제한, OpenAPI 생성 등과 같은 엔드포인트 동작을 제어합니다.
.NET 9는 개발자 예외 페이지에 메타데이터를 추가합니다. 새 메타데이터 정보는 다른 라우팅 정보와 함께 섹션에 표시됩니다 Routing
. 이 정보를 사용하면 개발 중에 ASP.NET Core 오류를 더 쉽게 디버그할 수 있습니다. 다음 이미지는 개발자 예외 페이지의 새 메타데이터 정보를 보여줍니다.
사전 디버깅 개선 사항
사전 및 기타 키-값 컬렉션의 디버깅 표시에는 향상된 레이아웃이 있습니다. 키는 값과 연결되지 않고 디버거의 키 열에 표시됩니다. 다음 이미지는 디버거에서 사전의 이전 및 새 표시를 보여 줍니다.
이전:
이후:
ASP.NET Core에는 많은 키-값 컬렉션이 있습니다. 이 향상된 디버깅 환경은 다음에 적용됩니다.
- HTTP 헤더
- 쿼리 문자열
- 폼
- Cookies
- 데이터 보기
- 경로 데이터
- 기능
ASP.NET Core
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기