Sdílet prostřednictvím


Novinky v ASP.NET Core 10.0

Tento článek popisuje nejvýznamnější změny v ASP.NET Core 10.0 s odkazy na příslušnou dokumentaci.

Tento článek se aktualizuje, jakmile budou dostupné nové verze Preview. Dokud se tato stránka neaktualizuje, nahlédněte do oznámení na stránce Asp.Net Core.

Blazor

Tato část popisuje nové funkce pro Blazor.

parametr QuickGridRowClass

Aplikujte stylovou třídu na řádek mřížky na základě položky řádku pomocí nového parametru RowClass. V následujícím příkladu se metoda GetRowCssClass volá na každém řádku, aby podmíněně aplikovala třídu stylů na základě položky v řádku.

<QuickGrid ... RowClass="GetRowCssClass">
    ...
</QuickGrid>

@code {
    private string GetRowCssClass(MyGridItem item) =>
        item.IsArchived ? "row-archived" : null;
}

Další informace najdete v tématu ASP.NET Core BlazorQuickGrid komponenta.

Blazor skript jako statický webový soubor

V předchozích verzích rozhraní .NET se skript Blazor obsluhuje z vloženého prostředku ve sdíleném rozhraní ASP.NET Core. V .NET 10 nebo novějším se skript Blazor obsluhuje jako statický webový prostředek s automatickou kompresí a otiskem prstu.

Další informace najdete v následujících zdrojích informací:

Zvýraznění šablony trasy

Atribut [Route] teď podporuje zvýraznění syntaxe tras, které pomáhá vizualizovat strukturu šablony trasy:

vzor šablony atributu trasy pro hodnotu čítače zobrazuje zvýraznění syntaxe

SignalR

Tato část popisuje nové funkce pro SignalR.

Minimální rozhraní API

Tato část popisuje nové funkce pro minimální rozhraní API.

OpenAPI

Tato část popisuje nové funkce pro OpenAPI.

Podpora OpenAPI 3.1

ASP.NET Core přidala podporu pro generování dokumentů OpenAPI verze 3.1 v .NET 10. Navzdory menšímu zvýšení verze je OpenAPI 3.1 významnou aktualizací specifikace OpenAPI, zejména s plnou podporou pro JSON Schéma draft 2020-12.

Mezi změny, které se zobrazí ve vygenerovaném dokumentu OpenAPI, patří:

  • Typy s možnou hodnotou null již nemají vlastnost nullable: true ve schématu.
  • Místo vlastnosti nullable: true mají klíčové slovo type, jehož hodnota je pole, které obsahuje null jako jeden z typů.

S touto funkcí je výchozí verze OpenAPI pro vygenerované dokumenty3.1. Verzi lze změnit explicitním nastavením vlastnosti OpenApiVersion v rámci OpenApiOptions v parametru delegáta configureOptionsAddOpenApi.

builder.Services.AddOpenApi(options =>
{
    // Specify the OpenAPI version to use.
    options.OpenApiVersion = Microsoft.OpenApi.OpenApiSpecVersion.OpenApi3_0;
});

Při generování dokumentu OpenAPI v době sestavení je možné vybrat verzi OpenAPI nastavením --openapi-version v položce OpenApiGenerateDocumentsOptions MSBuild.

    <!-- Configure build-time OpenAPI generation to produce an OpenAPI 3.0 document. -->
    <OpenApiGenerateDocumentsOptions>--openapi-version OpenApi3_0</OpenApiGenerateDocumentsOptions>

Podpora OpenAPI 3.1 byla primárně přidána v následujícím PR.

Zásadní změny OpenAPI 3.1

Podpora openAPI 3.1 vyžaduje aktualizaci základní knihovny OpenAPI.NET na novou hlavní verzi 2.0. Tato nová verze obsahuje některé zásadní změny z předchozí verze. Zásadní změny můžou mít vliv na aplikace, pokud mají nějaký dokument, operaci nebo transformátory schématu.

Jednou z nejvýznamnějších změn je, že třída OpenApiAny byla vyřazena ve prospěch použití JsonNode přímo. Transformátory, které používají OpenApiAny je potřeba aktualizovat, aby používaly JsonNode. Následující rozdíl ukazuje změny v transformátoru schématu z .NET 9 na .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;
});

Mějte na paměti, že tyto změny jsou nezbytné i v případě, že se změní pouze verze OpenAPI na verzi 3.0.

OpenAPI ve YAML

ASP.NET teď podporuje obsluhu vygenerovaného dokumentu OpenAPI ve formátu YAML. YAML může být výstižnější než JSON, protože eliminuje složené závorky a uvozovky, když lze tyto prvky odvodit. YAML také podporuje víceřádkové řetězce, které můžou být užitečné pro dlouhé popisy.

Pokud chcete nakonfigurovat aplikaci tak, aby sloužila vygenerovanému dokumentu OpenAPI ve formátu YAML, zadejte koncový bod ve volání MapOpenApi příponou .yaml nebo .yml, jak je znázorněno v následujícím příkladu:

app.MapOpenApi("/openapi/{documentName}.yaml");

Podpora pro:

  • YAML je aktuálně k dispozici pouze pro OpenAPI obsluhované z koncového bodu OpenAPI.
  • Vygenerování dokumentů OpenAPI ve formátu YAML v době sestavení se přidá v budoucí verzi Preview.

Podívejte se na tento PR, který přidal podporu pro poskytování vygenerovaného dokumentu OpenAPI ve formátu YAML.

Popis odpovědi pro ProducesResponseType

ProducesAttribute, ProducesResponseTypeAttributea ProducesDefaultResponseType atributy nyní přijímají volitelný řetězcový parametr, Description, který nastaví popis odpovědi. Tady je příklad:

[HttpGet(Name = "GetWeatherForecast")]
[ProducesResponseType<IEnumerable<WeatherForecast>>(StatusCodes.Status200OK, Description = "The weather forecast for the next 5 days.")]
public IEnumerable<WeatherForecast> Get()
{

A vygenerované rozhraní OpenAPI:

        "responses": {
          "200": {
            "description": "The weather forecast for the next 5 days.",
            "content": {

Příspěvek komunity od Sander ten Brinke🙏

Ověřování a autorizace

Tato část popisuje nové funkce pro ověřování a autorizaci.

Různé

Tato část popisuje různé nové funkce ASP.NET Core 10.0.

Lepší podpora pro testování aplikací pomocí příkazů nejvyšší úrovně

.NET 10 teď nabízí lepší podporu pro testování aplikací, které používají příkazy nejvyšší úrovně . Dříve vývojáři museli do souboru public partial class Program ručně přidat Program.cs, aby testovací projekt mohl odkazovat na Program class. public partial class Program bylo požadováno, protože příkaz nejvyšší úrovně v jazyce C# 9 vygeneroval Program class, která byla deklarována jako interní.

V rozhraní .NET 10 se k vygenerování deklarace používá public partial class Program, pokud ji programátor explicitně nedeklaroval. Kromě toho byl přidán analyzátor, který zjistil, kdy je public partial class Program deklarován explicitně, a doporučí vývojáři, aby ho odebral.

obrázek

K této funkci přispěly následující PRy.

Zjištění, jestli je adresa URL místní, pomocí RedirectHttpResult.IsLocalUrl

Pomocí nové pomocné metody RedirectHttpResult.IsLocalUrl(url) zjistěte, jestli je adresa URL místní. Adresa URL se považuje za místní, pokud jsou splněné následující podmínky:

Adresy URL používající virtuálních cest"~/" jsou také místní.

IsLocalUrl je užitečný pro ověřování adres URL před jejich přesměrováním, aby se předešlo útokům otevřeného přesměrování .

if (RedirectHttpResult.IsLocalUrl(url))
{
    return Results.LocalRedirect(url);
}

Děkujeme vám @martincostello za tento příspěvek!