ASP.NET Core 10.0의 새로운 기능
이 문서에서는 ASP.NET Core 10.0의 가장 중요한 변경 내용과 관련 설명서에 대한 링크를 강조 표시합니다.
이 문서는 새 미리 보기 릴리스를 사용할 수 있게 됨에 따라 업데이트됩니다. 이 페이지가 업데이트될 때까지 Asp.Net Core 공지 페이지를 참조하세요.
Blazor
이 섹션에서는 Blazor대한 새로운 기능에 대해 설명합니다.
QuickGrid
RowClass
매개 변수
새 RowClass
매개 변수를 사용하여 행 항목에 따라 표의 행에 스타일시트 클래스를 적용합니다. 다음 예제에서는 각 행에서 GetRowCssClass
메서드를 호출하여 행 항목에 따라 스타일시트 클래스를 조건부로 적용합니다.
<QuickGrid ... RowClass="GetRowCssClass">
...
</QuickGrid>
@code {
private string GetRowCssClass(MyGridItem item) =>
item.IsArchived ? "row-archived" : null;
}
자세한 내용은 ASP.NET Core Blazor 'QuickGrid' 구성 요소참조하세요.
Blazor 스크립트를 정적 웹 자산으로
.NET의 이전 릴리스에서 Blazor 스크립트는 ASP.NET Core 공유 프레임워크의 포함된 리소스에서 제공됩니다. .NET 10 이상에서 Blazor 스크립트는 자동 압축 및 지문을 사용하는 정적 웹 자산으로 제공됩니다.
자세한 내용은 다음 리소스를 참조하세요.
경로 템플릿 강조 표시
이제 [Route]
특성 경로 구문 강조 표시를 지원하여 경로 템플릿의 구조를 시각화합니다.
카운터 값에 대한 경로 특성의 강조 표시된 구문을 보여 줍니다.
SignalR
이 섹션에서는 SignalR대한 새로운 기능에 대해 설명합니다.
최소 API
이 섹션에서는 최소 API에 대한 새로운 기능에 대해 설명합니다.
OpenAPI
이 섹션에서는 OpenAPI의 새로운 기능에 대해 설명합니다.
OpenAPI 3.1 지원
ASP.NET Core는 .NET 10에서 OpenAPI 버전 3.1 문서를 생성하기 위한 지원을 추가했습니다. 소 버전 업데이트임에도 불구하고, OpenAPI 3.1은 특히 JSON 스키마 초안 2020-12에 대한 완전한 지원을 통해 OpenAPI 사양에 대한 중요한 업데이트입니다.
생성된 OpenAPI 문서에 표시되는 변경 내용 중 일부는 다음과 같습니다.
- Nullable 형식에는 스키마에
nullable: true
속성이 더 이상 없습니다. -
nullable: true
속성 대신, 값이 배열로 표현되어 있으며 그 배열에는null
를 포함하는type
키워드가 있습니다.
이 기능을 사용하면 생성된 문서에 대한 기본 OpenAPI 버전이3.1
.
AddOpenApiconfigureOptions
대리자 매개 변수에서 OpenApiOptionsOpenApiVersion 속성을 명시적으로 설정하여 버전을 변경할 수 있습니다.
builder.Services.AddOpenApi(options =>
{
// Specify the OpenAPI version to use.
options.OpenApiVersion = Microsoft.OpenApi.OpenApiSpecVersion.OpenApi3_0;
});
빌드 시 OpenAPI 문서를 생성할 때 OpenApiGenerateDocumentsOptions
MSBuild 항목에서 --openapi-version
설정하여 OpenAPI 버전을 선택할 수 있습니다.
<!-- Configure build-time OpenAPI generation to produce an OpenAPI 3.0 document. -->
<OpenApiGenerateDocumentsOptions>--openapi-version OpenApi3_0</OpenApiGenerateDocumentsOptions>
OpenAPI 3.1 지원은 주로 다음 PR에서 추가되었습니다.
OpenAPI 3.1 호환성에 영향을 미치는 변경 사항
OpenAPI 3.1을 지원하려면 기본 OpenAPI.NET 라이브러리를 새 주 버전인 2.0으로 업데이트해야 합니다. 이 새 버전에는 이전 버전과 비교하여 호환성에 중대한 영향을 미치는 변경 내용이 있습니다. 호환성을 깨뜨리는 변경 사항은 문서, 작업 또는 스키마 변환기가 있는 경우 앱에 영향을 미칠 수 있습니다.
가장 중요한 변경 사항 중 하나는 OpenApiAny
클래스가 JsonNode
직접 사용하기 위해 삭제되었다는 것입니다.
OpenApiAny
사용하는 변환기는 JsonNode
사용하도록 업데이트해야 합니다. .NET 9에서 .NET 10으로 업그레이드된 스키마 변환기의 변경 내역은 다음과 같습니다.
options.AddSchemaTransformer((schema, context, cancellationToken) =>
{
if (context.JsonTypeInfo.Type == typeof(WeatherForecast))
{
- schema.Example = new OpenApiObject
+ schema.Example = new JsonObject
{
- ["date"] = new OpenApiString(DateTime.Now.AddDays(1).ToString("yyyy-MM-dd")),
+ ["date"] = DateTime.Now.AddDays(1).ToString("yyyy-MM-dd"),
- ["temperatureC"] = new OpenApiInteger(0),
+ ["temperatureC"] = 0,
- ["temperatureF"] = new OpenApiInteger(32),
+ ["temperatureF"] = 32,
- ["summary"] = new OpenApiString("Bracing"),
+ ["summary"] = "Bracing",
};
}
return Task.CompletedTask;
});
이러한 변경 내용은 OpenAPI 버전을 3.0으로 구성하는 경우에만 필요합니다.
Yaml의 OpenAPI
이제 ASP.NET 생성된 OpenAPI 문서를 YAML 형식으로 제공합니다. YAML은 JSON보다 간결할 수 있으므로 유추할 수 있을 때 중괄호와 따옴표를 제거합니다. YAML은 긴 설명에 유용할 수 있는 여러 줄 문자열도 지원합니다.
생성된 OpenAPI 문서를 YAML 형식으로 제공하도록 앱을 구성하려면 다음 예제와 같이 ".yaml" 또는 ".yml" 접미사를 사용하여 MapOpenApi 호출의 엔드포인트를 지정합니다.
app.MapOpenApi("/openapi/{documentName}.yaml");
지원 대상:
- YAML은 현재 OpenAPI 엔드포인트에서 제공되는 OpenAPI에만 사용할 수 있습니다.
- 빌드 시 YAML 형식으로 OpenAPI 문서를 생성하는 작업이 향후 미리 보기에 추가됩니다.
생성된 OpenAPI 문서를 YAML 형식으로 제공하는 지원을 추가한 이 PR 참조하세요.
ProducesResponseType에 대한 응답 설명
ProducesAttribute, ProducesResponseTypeAttribute및 ProducesDefaultResponseType 특성은 이제 응답에 대한 설명을 설정하는 선택적 문자열 매개 변수 Description
허용합니다. 예제는 다음과 같습니다.
[HttpGet(Name = "GetWeatherForecast")]
[ProducesResponseType<IEnumerable<WeatherForecast>>(StatusCodes.Status200OK, Description = "The weather forecast for the next 5 days.")]
public IEnumerable<WeatherForecast> Get()
{
생성된 OpenAPI는 다음과 같습니다.
"responses": {
"200": {
"description": "The weather forecast for the next 5 days.",
"content": {
인증 및 권한 부여
이 섹션에서는 인증 및 권한 부여를 위한 새로운 기능에 대해 설명합니다.
기타
이 섹션에서는 ASP.NET Core 10.0의 기타 새로운 기능에 대해 설명합니다.
최상위 문을 사용한 앱 테스트에 대한 지원 향상
.NET 10은 이제 최상위 문을 사용하는 앱을 테스트하는 데 더 나은 지원을 제공합니다. 이전에 개발자는 테스트 프로젝트에서 Program class
참조할 수 있도록 Program.cs
파일에 public partial class Program
수동으로 추가해야 했습니다. C# 9의 최상위 문 기능이 내부으로 선언된 Program class
을 생성했기 때문에 public partial class Program
이 필요했습니다.
.NET 10에서는 프로그래머가 명시적으로 선언하지 않은 경우 원본 생성기 사용하여 public partial class Program
선언을 생성합니다. 또한 public partial class Program
명시적으로 선언된 시기를 감지하고 개발자에게 제거하도록 권고하기 위해 분석기가 추가되었습니다.
이 기능에 기여한 PR은 다음과 같습니다.
RedirectHttpResult.IsLocalUrl
사용하여 URL이 로컬인지 감지
새 RedirectHttpResult.IsLocalUrl(url)
도우미 메서드를 사용하여 URL이 로컬인지 검색합니다. URL은 다음이 true인 경우 로컬로 간주됩니다.
"~/"
가상 경로를 사용하는 URL도 로컬입니다.
IsLocalUrl
URL로 리디렉션하기 전에 유효성을 검사하여 오픈 리디렉션 공격을 방지하는 데 유용합니다.
if (RedirectHttpResult.IsLocalUrl(url))
{
return Results.LocalRedirect(url);
}
이 기여에 @martincostello 감사합니다!
관련 콘텐츠
ASP.NET Core