A ASP.NET Core 10.0 újdonságai
Ez a cikk a ASP.NET Core 10.0 legfontosabb változásait emeli ki a vonatkozó dokumentációra mutató hivatkozásokkal.
Ez a cikk az új előzetes verziók elérhetővé tételének megfelelően frissülni fog. A lap frissítéséig tekintse meg a Asp.Net Core bejelentés oldalát.
Blazor
Ez a szakasz a Blazorúj funkcióit ismerteti.
QuickGrid
RowClass
paraméter
Stíluslaposztály alkalmazása a rács egy sorára a sorelem alapján az új RowClass
paraméterrel. Az alábbi példában a GetRowCssClass
metódust minden sorban meghívjuk, hogy feltételesen alkalmazzon egy stíluslaposztályt a sorelem alapján:
<QuickGrid ... RowClass="GetRowCssClass">
...
</QuickGrid>
@code {
private string GetRowCssClass(MyGridItem item) =>
item.IsArchived ? "row-archived" : null;
}
További információ: ASP.NET Core Blazor `QuickGrid` összetevő.
Blazor szkript statikus webes objektumként
A .NET korábbi kiadásaiban a Blazor szkript egy beágyazott erőforrásból lesz kiszolgálva a ASP.NET Core megosztott keretrendszerében. A .NET 10-ben vagy újabb verziókban a Blazor szkript statikus webes objektumként szolgál ki automatikus tömörítéssel és ujjlenyomattal.
További információ:
Az útvonalsablon kiemelt pontjai
A [Route]
attribútum mostantól támogatja az útvonalszintaxis kiemelését az útvonalsablon szerkezetének megjelenítéséhez:
Blazor Hybrid
Ez a szakasz a Blazor Hybridúj funkcióit ismerteti.
Új .NET MAUIBlazor Hybrid egy Blazor Web App-vel és ASP.NET Core Identity-mal készült cikk és minta
Új cikk és mintaalkalmazás lett hozzáadva .NET MAUIBlazor Hybrid és webalkalmazáshoz ASP.NET Core Identityhasználatával.
További információ:
- .NET MAUI Blazor Hybrid és Webalkalmazás ASP.NET Core Identity
-
MauiBlazorWebIdentity
mintaalkalmazás (dotnet/blazor-samples
GitHub-adattár)
SignalR
Ez a szakasz a SignalRúj funkcióit ismerteti.
Minimális API-k
Ez a szakasz a minimális API-k új funkcióit ismerteti.
OpenAPI
Ez a szakasz az OpenAPI új funkcióit ismerteti.
OpenAPI 3.1-támogatás
ASP.NET Core támogatást adott hozzá a .NET 10-hez az OpenAPI 3.1-es verziójának létrehozásához. Annak ellenére, hogy az alverziószám növelése, az OpenAPI 3.1 jelentős frissítés az OpenAPI specifikációban, különösen azáltal, hogy teljes körű támogatást nyújt a JSON Schema draft 2020-12-hoz.
A létrehozott OpenAPI-dokumentumban a következő változások láthatók:
- A null értékű típusok már nem rendelkeznek a séma
nullable: true
tulajdonságával. - A
nullable: true
tulajdonság helyett egytype
kulcsszóval rendelkeznek, amelynek értéke egy olyan tömb, amelynull
tartalmaz az egyik típusként.
Ezzel a funkcióval a létrehozott dokumentumok alapértelmezett OpenAPI-verziója3.1
. A verzió módosítható azáltal, hogy explicit módon beállítja az OpenApiVersion tulajdonságot a(z) OpenApiOptionsconfigureOptions
delegált paraméterében a(z) AddOpenApisorán.
builder.Services.AddOpenApi(options =>
{
// Specify the OpenAPI version to use.
options.OpenApiVersion = Microsoft.OpenApi.OpenApiSpecVersion.OpenApi3_0;
});
Az OpenAPI dokumentum generálásakor összeállítási időben az OpenAPI verzió a --openapi-version
MSBuild elemben található OpenApiGenerateDocumentsOptions
beállításával választható ki.
<!-- Configure build-time OpenAPI generation to produce an OpenAPI 3.0 document. -->
<OpenApiGenerateDocumentsOptions>--openapi-version OpenApi3_0</OpenApiGenerateDocumentsOptions>
Az OpenAPI 3.1 támogatását elsősorban a következő PR-ben adták hozzá.
3.1-es OpenAPI kompatibilitástörő változások
Az OpenAPI 3.1 támogatásához frissíteni kell a mögöttes OpenAPI.NET kódtárat egy új főverzióra, a 2.0-ra. Ez az új verzió néhány kompatibilitástörő változást hozott az előző verzióhoz képest. A kompatibilitástörő változások hatással lehetnek az alkalmazásokra, ha dokumentum-, művelet- vagy sématranszformátorokkal rendelkeznek.
Az egyik legfontosabb változás az, hogy a OpenApiAny
osztályt a JsonNode
közvetlen használata mellett elvetették. A OpenApiAny
használó átalakítókat frissíteni kell a JsonNode
használatához. Az alábbi ábra a sémaátalakító .NET 9-ről .NET 10-re történő változásait mutatja be:
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;
});
Vegye figyelembe, hogy ezek a módosítások akkor is szükségesek, ha csak az OpenAPI-verziót 3.0-ra konfigurálja.
OpenAPI a YAML nyelvben
ASP.NET mostantól támogatja a létrehozott OpenAPI-dokumentum YAML formátumban való kiszolgálását. A YAML tömörebb lehet, mint a JSON, kiküszöbölve a kapcsos zárójeleket és idézőjeleket, amikor ezek feltételezhetők. A YAML támogatja a többsoros sztringeket is, amelyek hosszú leírásokhoz hasznosak lehetnek.
Ha egy alkalmazást úgy szeretne konfigurálni, hogy a létrehozott OpenAPI-dokumentumot YAML formátumban szolgálja ki, adja meg a végpontot a MapOpenApi hívásban egy ".yaml" vagy ".yml" utótaggal, ahogyan az a következő példában látható:
app.MapOpenApi("/openapi/{documentName}.yaml");
Támogatás a következőhöz:
- A YAML jelenleg csak az OpenAPI-végpontról érhető el.
- Az OpenAPI-dokumentumok létrehozása YAML formátumban a buildeléskor egy későbbi előzetes verzióban lesz hozzáadva.
Lásd ezt a számú PR-t, amely támogatta a létrehozott OpenAPI-dokumentum YAML formátumban való kiszolgálását.
Válasz leírása a ProducesResponseType-on
A ProducesAttribute, ProducesResponseTypeAttributeés ProducesDefaultResponseType attribútumok mostantól elfogadnak egy választható sztringparamétert Description
, amely beállítja a válasz leírását. Íme egy példa:
[HttpGet(Name = "GetWeatherForecast")]
[ProducesResponseType<IEnumerable<WeatherForecast>>(StatusCodes.Status200OK, Description = "The weather forecast for the next 5 days.")]
public IEnumerable<WeatherForecast> Get()
{
És a létrehozott OpenAPI:
"responses": {
"200": {
"description": "The weather forecast for the next 5 days.",
"content": {
Közösségi hozzájárulás által 🙏
Hitelesítés és engedélyezés
Ez a szakasz a hitelesítés és az engedélyezés új funkcióit ismerteti.
Vegyes
Ez a szakasz a ASP.NET Core 10.0 különböző új funkcióit ismerteti.
Jobb támogatás az alkalmazások legfelső szintű utasításokkal való teszteléséhez
A .NET 10 mostantól jobban támogatja a legfelső szintű utasításokathasználó alkalmazások tesztelését. Korábban a fejlesztőknek manuálisan kellett hozzáadniuk a public partial class Program
-t a Program.cs
fájlhoz, hogy a tesztprojekt hivatkozhasson a Program class
-re.
public partial class Program
-ra azért volt szükség, mert a C# 9 legfelső szintű utasítás funkciója létrehozott egy Program class
-et, amelyet belső-ként deklaráltak.
A .NET 10-ben egy forrásgenerátort használ a public partial class Program
deklaráció létrehozásához, ha a programozó nem deklarálta explicit módon. Emellett hozzáadtunk egy elemzőt, amely észleli, hogy public partial class Program
mikor van explicit módon deklarálva, és azt tanácsolja a fejlesztőnek, hogy távolítsa el.
A következő PR-k járultak hozzá ehhez a funkcióhoz:
Annak észlelése, hogy az URL-cím helyi-e RedirectHttpResult.IsLocalUrl
Az új RedirectHttpResult.IsLocalUrl(url)
segédmetódussal állapítsa meg, hogy az URL-cím helyi-e. Az URL-cím akkor tekinthető helyinek, ha az alábbiak teljesülnek:
- Nem rendelkezik a kiszolgáló vagy hatóság szakaszával.
- Van egy abszolút elérési út.
A virtuális útvonalakat"~/"
használó URL-címek szintén helyiek.
IsLocalUrl
az URL-címek ellenőrzéséhez hasznos, mielőtt átirányítja őket, hogy megakadályozza nyílt átirányítási támadásokat.
if (RedirectHttpResult.IsLocalUrl(url))
{
return Results.LocalRedirect(url);
}
Köszönjük, @martincostello ezt a hozzájárulást!