Novinky v ASP.NET Core 9.0
Tento článek popisuje nejvýznamnější změny v ASP.NET Core 9.0 s odkazy na příslušnou dokumentaci.
Tento článek byl aktualizován pro .NET 9 Preview 3.
Blazor
Tato část popisuje nové funkce pro Blazor.
Injektáž konstruktoru
Razor komponenty podporují injektáž konstruktoru.
V následujícím příkladu částečná třída (za kódem) vloží NavigationManager
službu pomocí primárního konstruktoru:
public partial class ConstructorInjection(NavigationManager navigation)
{
protected NavigationManager Navigation { get; } = navigation;
}
Další informace najdete v tématu ASP.NET injektáž závislostí jádraBlazor.
Komprese protokolu Websocket pro komponenty interaktivního serveru
Komponenty interaktivního serveru ve výchozím nastavení umožňují kompresi připojení WebSocket a nastavují 'self'
direktivu frame-ancestors
Content Security Policy (CSP), která povoluje pouze vkládání aplikace do <iframe>
zdroje, ze kterého se aplikace obsluhuje při povolení komprese nebo při poskytnutí konfigurace kontextu Protokolu WebSocket.
Kompresi je možné zakázat nastavením na null
hodnotu ConfigureWebSocketOptions
, která snižuje ohrožení zabezpečení aplikace na útok, ale může vést ke snížení výkonu:
.AddInteractiveServerRenderMode(o => o.ConfigureWebSocketOptions = null)
Nakonfigurujte přísnější frame-ancestors
CSP s hodnotou 'none'
(vyžaduje se jednoduché uvozovky), která umožňuje kompresi Protokolu WebSocket, ale brání prohlížečům v vložení aplikace do libovolné <iframe>
:
.AddInteractiveServerRenderMode(o => o.ContentSecurityFrameAncestorsPolicy = "'none'")
Další informace naleznete v následujících zdrojích:
- Pokyny pro ASP.NET Core BlazorSignalR
- Pokyny ke zmírnění hrozeb pro interaktivní vykreslování na straně serveru ASP.NET Core Blazor
Zpracování událostí složení klávesnice v Blazor
Nová KeyboardEventArgs.IsComposing
vlastnost označuje, jestli je událost klávesnice součástí relace složení. Sledování stavu složení událostí klávesnice je zásadní pro zpracování mezinárodních metod zadávání znaků.
SignalR
Tato část popisuje nové funkce pro SignalR.
Podpora polymorfního typu ve SignalR službě Hubs
Metody centra teď můžou místo odvozené třídy přijmout základní třídu, aby bylo možné polymorfní scénáře. Základní typ musí být opatřen poznámkami, aby bylo možné polymorfismus.
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; }
}
Minimální rozhraní API
Tato část popisuje nové funkce pro minimální rozhraní API.
Přidáno InternalServerError
a InternalServerError<TValue>
do TypedResults
Třída TypedResults je užitečným vozidlem pro vrácení odpovědí na stavový kód HTTP se silnými typy z minimálního rozhraní API. TypedResults
nyní obsahuje metody a typy továrny pro vrácení odpovědí "500 Internal Server Error" z koncových bodů. Tady je příklad, který vrátí odpověď 500:
var app = WebApplication.Create();
app.MapGet("/", () => TypedResults.InternalServerError("Something went wrong!"));
app.Run();
Ověřování a autorizace
Tato část popisuje nové funkce pro ověřování a autorizaci.
Přizpůsobení parametrů OIDC a OAuth
Obslužné rutiny ověřování OAuth a OIDC teď mají AdditionalAuthorizationParameters
možnost usnadnit přizpůsobení parametrů autorizační zprávy, které jsou obvykle součástí řetězce dotazu přesměrování. V .NET 8 a starších verzích to vyžaduje vlastní OnRedirectToIdentityProvider metodu zpětného volání nebo přepsání BuildChallengeUrl ve vlastní obslužné rutině. Tady je příklad kódu .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;
};
});
Předchozí příklad je teď možné zjednodušit následujícím kódem:
builder.Services.AddAuthentication().AddOpenIdConnect(options =>
{
options.AdditionalAuthorizationParameters.Add("prompt", "login");
options.AdditionalAuthorizationParameters.Add("audience", "https://api.example.com");
});
Konfigurace HTTP.sys rozšířených příznaků ověřování
Teď můžete nakonfigurovat HTTP_AUTH_EX_FLAG_ENABLE_KERBEROS_CREDENTIAL_CACHING
příznaky a HTTP_AUTH_EX_FLAG_CAPTURE_CREDENTIAL
HTTP.sys pomocí nových EnableKerberosCredentialCaching
vlastností CaptureCredentials
v HTTP.sys AuthenticationManager a optimalizovat způsob zpracování ověřování systému Windows. Příklad:
webBuilder.UseHttpSys(options =>
{
options.Authentication.Schemes = AuthenticationSchemes.Negotiate;
options.Authentication.EnableKerberosCredentialCaching = true;
options.Authentication.CaptureCredentials = true;
});
Různé
Následující části popisují různé nové funkce.
Metadata koncového bodu na stránce výjimky vývojáře
Příklady metadat koncových bodů jsou atributy přidané do akcí MVC, minimálních rozhraní API a metod gRPC. ASP.NET Core používá metadata koncových bodů k řízení chování koncových bodů, jako je směrování, ověřování a autorizace, ukládání odpovědí do mezipaměti, omezování rychlosti, generování OpenAPI a další.
.NET 9 přidá metadata na stránku výjimky vývojáře. Nové informace o metadatech se zobrazí v Routing
části spolu s dalšími informacemi o směrování. Tyto informace usnadňují ladění chyb ASP.NET Core během vývoje. Následující obrázek znázorňuje nové informace o metadatech na stránce výjimky vývojáře:
Vylepšení ladění slovníku
Zobrazení ladění slovníků a dalších kolekcí klíč-hodnota má vylepšené rozložení. Klíč se místo zřetězení s hodnotou zobrazí ve sloupci klíče ladicího programu. Následující obrázky ukazují starý a nový displej slovníku v ladicím programu.
Před:
Po:
ASP.NET Core obsahuje mnoho kolekcí klíč-hodnota. Toto vylepšené možnosti ladění platí pro:
- Záhlaví HTTP
- Řetězce dotazů
- Formuláře
- CookieS
- Zobrazit data
- Směrování dat
- Funkce
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro