Novinky v ASP.NET Core 5.0
Tento článek popisuje nejvýznamnější změny v ASP.NET Core 5.0 s odkazy na příslušnou dokumentaci.
ASP.NET Core MVC a Razor vylepšení
Vazba modelu DateTime jako UTC
Vazba modelu nyní podporuje vazby časových řetězců UTC na DateTime
. Pokud požadavek obsahuje řetězec času UTC, vazba modelu ho sváže s časem UTC DateTime
. Například následující časový řetězec je svázán se standardem UTC DateTime
: https://example.com/mycontroller/myaction?time=2019-06-14T02%3A30%3A04.0576719Z
Vazby a ověřování modelů s typy záznamů C# 9
Typy záznamů C# 9 lze použít s vazbou modelu v kontroleru MVC nebo Razor stránce. Typy záznamů představují dobrý způsob, jak modelovat přenášená data přes síť.
Například následující PersonController
typ záznamu Person
používá s vazbou modelu a ověřením formuláře:
public record Person([Required] string Name, [Range(0, 150)] int Age);
public class PersonController
{
public IActionResult Index() => View();
[HttpPost]
public IActionResult Index(Person person)
{
// ...
}
}
Soubor Person/Index.cshtml
:
@model Person
<label>Name: <input asp-for="Model.Name" /></label>
<span asp-validation-for="Model.Name" />
<label>Age: <input asp-for="Model.Age" /></label>
<span asp-validation-for="Model.Age" />
Vylepšení dynamicRouteValueTransformer
ASP.NET Core 3.1 zavedl DynamicRouteValueTransformer jako způsob použití vlastního koncového bodu k dynamickému výběru akce kontroleru MVC nebo Razor stránky. ASP.NET aplikace Core 5.0 můžou předat stav DynamicRouteValueTransformer
a filtrovat sadu vybraných koncových bodů.
Různé
- Atribut [Compare] lze použít u vlastností Razor modelu stránky.
- Parametry a vlastnosti vázané z těla jsou ve výchozím nastavení považovány za povinné.
Webové rozhraní API
Specifikace OpenAPI je ve výchozím nastavení zapnutá
Specifikace OpenAPI je oborový standard pro popis rozhraní HTTP API a jejich integraci do složitých obchodních procesů nebo se třetími stranami. OpenAPI je široce podporován všemi poskytovateli cloudu a mnoha registry rozhraní API. Aplikace, které generují dokumenty OpenAPI z webových rozhraní API, mají řadu nových příležitostí, ve kterých je možné tato rozhraní API použít. Ve spolupráci s správci opensourcového projektu Swashbuckle.AspNetCore obsahuje šablona rozhraní API ASP.NET Core závislost NuGet na Swashbuckle. Swashbuckle je oblíbený opensourcový balíček NuGet, který dynamicky generuje dokumenty OpenAPI. Swashbuckle to dělá úvodem přes kontrolery rozhraní API a generováním dokumentu OpenAPI za běhu nebo v době sestavení pomocí rozhraní příkazového řádku Swashbuckle.
V ASP.NET Core 5.0 šablony webového rozhraní API ve výchozím nastavení povolují podporu OpenAPI. Zakázání OpenAPI:
Z příkazového řádku:
dotnet new webapi --no-openapi true
V sadě Visual Studio: Zrušte zaškrtnutí políčka Povolit podporu OpenAPI.
Všechny .csproj
soubory vytvořené pro projekty webového rozhraní API obsahují odkaz na balíček NuGet Swashbuckle.AspNetCore .
<ItemGroup>
<PackageReference Include="Swashbuckle.AspNetCore" Version="5.5.1" />
</ItemGroup>
Vygenerovaný kód šablony obsahuje kód Startup.ConfigureServices
, který aktivuje generování dokumentů OpenAPI:
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers();
services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new OpenApiInfo { Title = "WebApp1", Version = "v1" });
});
}
Metoda Startup.Configure
přidá middleware Swashbuckle, který umožňuje:
- Proces generování dokumentů
- Stránka s uživatelským rozhraním Swagger ve výchozím nastavení v režimu vývoje
Vygenerovaný kód šablony nechtěně nezveřejní popis rozhraní API při publikování do produkčního prostředí.
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
app.UseSwagger(); // UseSwaggerUI Protected by if (env.IsDevelopment())
app.UseSwaggerUI(c => c.SwaggerEndpoint("/swagger/v1/swagger.json",
"WebApp1 v1"));
}
app.UseHttpsRedirection();
app.UseRouting();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
}
Azure API Management Import
Když ASP.NET projekty rozhraní CORE API povolí OpenAPI, visual Studio 2019 verze 16.8 a novější publikování automaticky nabídne další krok v toku publikování. Vývojáři, kteří používají Azure API Management , mají možnost automaticky importovat rozhraní API do služby Azure API Management během procesu publikování:
Lepší prostředí pro spouštění projektů webového rozhraní API
Když je ve výchozím nastavení povolené OpenAPI, výrazně se zlepší prostředí spouštění aplikací (F5) pro vývojáře webového rozhraní API. S ASP.NET Core 5.0 je šablona webového rozhraní API předem nakonfigurovaná tak, aby načetla stránku s uživatelským rozhraním Swagger. Stránka s uživatelským rozhraním Swagger poskytuje dokumentaci přidanou pro publikované rozhraní API a umožňuje testování rozhraní API jediným kliknutím.
Blazor
Zlepšení výkonu
Pro .NET 5 jsme výrazně vylepšili výkon modulu runtime .NET WebAssembly s konkrétním zaměřením na komplexní vykreslování uživatelského rozhraní a serializaci JSON. V našich testech Blazor WebAssembly výkonnosti je v .NET 5 pro většinu scénářů dvakrát až třikrát rychlejší. Další informace najdete v ASP.NET blogu: aktualizace ASP.NET Core v .NET 5 Release Candidate 1.
Izolace šablon stylů CSS
Blazor nyní podporuje definování stylů CSS, které jsou vymezeny na danou komponentu. Styly CSS specifické pro jednotlivé komponenty usnadňují odůvodnění stylů v aplikaci a zabránění neúmyslným vedlejším efektům globálních stylů. Další informace najdete v tématu ASP.NET Blazor Izolace šablon stylů CSS core.
Nová InputFile
komponenta
Komponenta InputFile
umožňuje čtení jednoho nebo více souborů vybraných uživatelem k nahrání. Další informace najdete v tématu ASP.NET nahrání souborů CoreBlazor.
Nové InputRadio
a InputRadioGroup
komponenty
Blazor má integrované InputRadio
součásti, InputRadioGroup
které zjednodušují datové vazby na skupiny přepínačů s integrovaným ověřováním. Další informace najdete v tématu ASP.NET Blazor základní vstupní komponenty.
Virtualizace komponent
Zlepšení vnímaného výkonu vykreslování komponent pomocí Blazor integrované podpory virtualizace architektury. Další informace najdete v tématu ASP.NET virtualizace komponent CoreRazor.
ontoggle
podpora událostí
Blazor události teď podporují ontoggle
událost MODELU DOM. Další informace najdete v tématu ASP.NET Zpracování událostí CoreBlazor.
Nastavení fokusu uživatelského rozhraní v Blazor aplikacích
K nastavení fokusu uživatelského rozhraní na tento prvek použijte metodu FocusAsync
pohodlí u odkazů na elementy. Další informace najdete v tématu ASP.NET Zpracování událostí CoreBlazor.
Vlastní ověřovací atributy třídy CSS
Atributy vlastních ověřovacích tříd CSS jsou užitečné při integraci s architekturami CSS, například Bootstrap. Další informace najdete v tématu ASP.NET ověřování základních Blazor formulářů.
Podpora IAsyncDisposable
Razor komponenty nyní podporují IAsyncDisposable rozhraní pro asynchronní uvolnění přidělených prostředků.
Izolace JavaScriptu a odkazy na objekty
Blazor umožňuje izolaci JavaScriptu ve standardních modulech JavaScriptu. Další informace najdete v tématu Volání funkcí JavaScriptu z metod .NET v ASP.NET Core Blazor.
Komponenty formulářů podporují zobrazovaný název.
Následující předdefinované komponenty podporují zobrazované názvy s parametrem DisplayName
:
InputDate
InputNumber
InputSelect
Další informace najdete v tématu ASP.NET Přehled formulářů CoreBlazor.
Parametry trasy pro zachytávání všech
V komponentách jsou podporovány všechny parametry trasy, které zachycují cesty přes více hranic složek. Další informace najdete v tématu ASP.NET Blazor Základní směrování a navigace.
Vylepšení ladění
Ladění Blazor WebAssembly aplikací se vylepšuje v ASP.NET Core 5.0. Ladění je teď podporováno na Visual Studio pro Mac. Další informace najdete v tématu Ladění aplikací ASP.NET CoreBlazor.
Microsoft Identity v2.0 a MSAL v2.0
Blazor security now uses Microsoft Identity v2.0 (Microsoft.Identity.Web
and Microsoft.Identity.Web.UI
) and MSAL v2.0. Další informace najdete v tématech v tématu Blazor Zabezpečení a Identity uzel.
Chráněné úložiště prohlížeče pro Blazor Server
Blazor Server Aplikace teď můžou používat integrovanou podporu pro ukládání stavu aplikace v prohlížeči, který je chráněný před manipulací pomocí ochrany dat ASP.NET Core. Data mohou být uložena v místním úložišti prohlížeče nebo v úložišti relací. Další informace najdete v tématu ASP.NET Blazor základní správa stavu.
Blazor WebAssembly předkreslování
Integrace komponent je vylepšená napříč modely hostování a Blazor WebAssembly aplikace teď můžou předem vyústit výstup na serveru.
Vylepšení oříznutí nebo propojení
Blazor WebAssembly provádí oříznutí nebo propojení mezi jazykem IL (Intermediate Language) během sestavení a ořízne nepotřebné il ze výstupních sestavení aplikace. S vydáním ASP.NET Core 5.0 Blazor WebAssembly provádí vylepšené oříznutí s dalšími možnostmi konfigurace. Další informace najdete v tématu Konfigurace oříznutí pro možnosti ASP.NET Core Blazor a Trimming.
Analyzátor kompatibility prohlížeče
Blazor WebAssembly aplikace cílí na celou oblast rozhraní .NET API, ale ne všechna rozhraní API .NET se podporují na WebAssembly kvůli omezením sandboxu prohlížeče. Při spuštění na WebAssembly dojde k vyvolání PlatformNotSupportedException nepodporovaných rozhraní API. Analyzátor kompatibility platformy upozorní vývojáře, když aplikace používá rozhraní API, která nejsou podporována cílovými platformami aplikace. Další informace najdete v tématu Využívání komponent ASP.NET Core Razor z knihovny tříd Razor (RCL).
Opožděná načtení sestavení
Blazor WebAssembly Výkon spuštění aplikace je možné zlepšit odložením načítání některých sestavení aplikace, dokud nebudou potřeba. Další informace naleznete v tématu Opožděné načtení sestavení v ASP.NET Core Blazor WebAssembly.
Aktualizovaná podpora globalizace
Podpora globalizace je k dispozici na Blazor WebAssembly základě mezinárodních komponent pro kódování Unicode (ICU). Další informace najdete v tématu ASP.NET globalizace a lokalizace jádraBlazor.
gRPC
V gRPC bylo provedeno mnoho vylepšení předformance. Další informace najdete v tématu vylepšení výkonu gRPC v .NET 5.
Další informace o gRPC naleznete v tématu Přehled gRPC v .NET.
SignalR
SignalR Filtry centra
SignalR Filtry rozbočovačů, označované jako kanály centra v ASP.NET SignalR, je funkce, která umožňuje spuštění kódu před a po metodách centra. Spouštění kódu před a po metodách centra je podobné tomu, jak má middleware schopnost spouštět kód před a po požadavku HTTP. Mezi běžné použití patří protokolování, zpracování chyb a ověřování argumentů.
Další informace naleznete v tématu Použití filtrů centra v ASP.NET Core SignalR.
SignalR paralelní vyvolání centra
ASP.NET Core SignalR teď dokáže zpracovat vyvolání paralelního centra. Výchozí chování lze změnit tak, aby klienti mohli vyvolat více než jednu metodu centra najednou:
public void ConfigureServices(IServiceCollection services)
{
services.AddSignalR(options =>
{
options.MaximumParallelInvocationsPerClient = 5;
});
}
Přidání podpory messagepacku v SignalR klientovi Java
Nový balíček com.microsoft.signalr. messagepack, přidá podporu MessagePacku SignalR do klienta Java. Pokud chcete použít protokol centra MessagePack, přidejte .withHubProtocol(new MessagePackHubProtocol())
ho do tvůrce připojení:
HubConnection hubConnection = HubConnectionBuilder.create(
"http://localhost:53353/MyHub")
.withHubProtocol(new MessagePackHubProtocol())
.build();
Kestrel
Znovu načístelné koncové body prostřednictvím konfigurace: Kestrel může detekovat změny konfigurace předávané do KestrelServerOptions.Configure a zrušit vazbu z existujících koncových bodů a svázat s novými koncovými body bez nutnosti restartování aplikace, pokud
reloadOnChange
jetrue
parametr . Ve výchozím nastavení se při použití ConfigureWebHostDefaults nebo Kestrel CreateDefaultBuildersváže s dílčím oddílem konfigurace "Kestrel" sreloadOnChange
povolenou. Aplikace musí být při voláníKestrelServerOptions.Configure
ručně předávanéreloadOnChange: true
, aby se znovu načítá koncové body.Vylepšení hlaviček odpovědí HTTP/2 Další informace najdete v tématu Vylepšení výkonu v další části.
Podporadalšíchchch System.Net.SocketsKestrel Podpora vazby k existujícím popisovačům souborů umožňuje používat existující
Systemd
integraci bez nutnostilibuv
přenosu.Vlastní dekódování hlaviček v Kestrel: Aplikace můžou určit, které Encoding se mají použít k interpretaci příchozích hlaviček na základě názvu záhlaví místo výchozího nastavení UTF-8.
Microsoft.AspNetCore.Server.Kestrel.KestrelServerOptions.RequestHeaderEncodingSelector
Nastavte vlastnost tak, aby určila, které kódování se má použít:public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureWebHostDefaults(webBuilder => { webBuilder.ConfigureKestrel(options => { options.RequestHeaderEncodingSelector = encoding => { return encoding switch { "Host" => System.Text.Encoding.Latin1, _ => System.Text.Encoding.UTF8, }; }; }); webBuilder.UseStartup<Startup>(); });
Kestrel Možnosti specifické pro koncové body prostřednictvím konfigurace
Byla přidána podpora pro konfiguraci Kestrelmožností specifických pro koncový bod prostřednictvím konfigurace. Konfigurace specifické pro koncový bod zahrnují:
- Použité protokoly HTTP
- Použité protokoly TLS
- Vybraný certifikát
- Režim klientského certifikátu
Konfigurace umožňuje určit, který certifikát je vybrán na základě zadaného názvu serveru. Název serveru je součástí rozšíření SNI (Server Name Indication) protokolu TLS, jak je uvedeno klientem. KestrelKonfigurace také podporuje předponu zástupných znaků v názvu hostitele.
Následující příklad ukazuje, jak určit konkrétní koncový bod pomocí konfiguračního souboru:
{
"Kestrel": {
"Endpoints": {
"EndpointName": {
"Url": "https://*",
"Sni": {
"a.example.org": {
"Protocols": "Http1AndHttp2",
"SslProtocols": [ "Tls11", "Tls12"],
"Certificate": {
"Path": "testCert.pfx",
"Password": "testPassword"
},
"ClientCertificateMode" : "NoCertificate"
},
"*.example.org": {
"Certificate": {
"Path": "testCert2.pfx",
"Password": "testPassword"
}
},
"*": {
// At least one sub-property needs to exist per
// SNI section or it cannot be discovered via
// IConfiguration
"Protocols": "Http1",
}
}
}
}
}
}
Označení názvu serveru (SNI) je rozšíření TLS, které zahrnuje virtuální doménu jako součást vyjednávání SSL. To znamená, že k identifikaci koncového bodu sítě je možné použít název virtuální domény nebo název hostitele.
Zlepšení výkonu
HTTP/2
Výrazné snížení přidělení v cestě kódu HTTP/2.
Podpora dynamické komprese HPack hlaviček odpovědí HTTP/2 v Kestrel. Další informace najdete v tématu Velikost tabulky záhlaví a HPACK: tichý vrah (funkce) HTTP/2.
Odesílání rámců HTTP/2 PING: HTTP/2 má mechanismus pro odesílání snímků PING, aby se zajistilo, že nečinné připojení je stále funkční. Zajištění přijatelného připojení je zvlášť užitečné při práci s dlouhodobými streamy, které jsou často nečinné, ale jen občas se zobrazují aktivity, například streamy gRPC. Aplikace můžou odesílat pravidelné rámce Kestrel PING nastavením limitů pro KestrelServerOptions:
public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureWebHostDefaults(webBuilder => { webBuilder.ConfigureKestrel(options => { options.Limits.Http2.KeepAlivePingInterval = TimeSpan.FromSeconds(10); options.Limits.Http2.KeepAlivePingTimeout = TimeSpan.FromSeconds(1); }); webBuilder.UseStartup<Startup>(); });
Kontejnery
Před .NET 5.0 se sestavením a publikováním souboru Dockerfile pro aplikaci ASP.NET Core vyžadovalo vyžádání celé sady .NET Core SDK a image ASP.NET Core. V této verzi se zmenší načítání bajtů imagí sady SDK a bajty načítané pro image ASP.NET Core se z velké části eliminují. Další informace najdete v tomto komentáři k problému Na GitHubu.
Ověřování a autorizace
Ověřování Microsoft Entra ID s Microsoftem.Identity Web
Šablony projektu ASP.NET Core se teď integrují s Microsoft.Identity.Web ověřováním pomocí ID Microsoft Entra. Microsoft .Identity. Webový balíček poskytuje:
- Lepší prostředí pro ověřování prostřednictvím Microsoft Entra ID.
- Jednodušší způsob, jak přistupovat k prostředkům Azure jménem uživatelů, včetně Microsoft Graphu. Podívejte se na Microsoft.Identity. Webová ukázka, která začíná základním přihlášením a postupuje prostřednictvím víceklientské architektury, pomocí rozhraní Azure API, pomocí Microsoft Graphu a ochrany vlastních rozhraní API.
Microsoft.Identity.Web
je k dispozici společně s .NET 5.
Povolit anonymní přístup ke koncovému bodu
Metoda AllowAnonymous
rozšíření umožňuje anonymní přístup ke koncovému bodu:
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapGet("/", async context =>
{
await context.Response.WriteAsync("Hello World!");
})
.AllowAnonymous();
});
}
Vlastní zpracování selhání autorizace
Vlastní zpracování selhání autorizace je teď jednodušší díky novému rozhraní IAuthorizationMiddlewareResultHandler, které je vyvoláno autorizačním middlewarem. Výchozí implementace zůstává stejná, ale vlastní obslužnou rutinu je možné zaregistrovat v [injektáž závislostí, která umožňuje vlastní odpovědi HTTP na základě důvodu selhání autorizace. Podívejte se na tuto ukázkuIAuthorizationMiddlewareResultHandler
, která demonstruje použití .
Autorizace při použití směrování koncového bodu
Autorizace při použití směrování koncového bodu teď obdrží HttpContext
místo instance koncového bodu. To umožňuje autorizačnímu middlewaru přístup k RouteData
jiným vlastnostem HttpContext
, které nebyly přístupné, i když třída Endpoint . Koncový bod lze načíst z kontextu pomocí kontextu. GetEndpoint.
Řízení přístupu na základě role s ověřováním Kerberos a protokolem LDAP v Linuxu
Zobrazení ověřování kerberos a řízení přístupu na základě role (RBAC)
Vylepšení rozhraní API
Metody rozšíření JSON pro HttpRequest a HttpResponse
Data JSON je možné číst a zapisovat z HttpRequest
nových a WriteAsJsonAsync
rozšiřujících metod a HttpResponse
používat jeReadFromJsonAsync. Tyto metody rozšíření používají serializátor System.Text.Json ke zpracování dat JSON. Nová HasJsonContentType
metoda rozšíření může také zkontrolovat, jestli má požadavek typ obsahu JSON.
Metody rozšíření JSON je možné kombinovat se směrováním koncových bodů a vytvářet rozhraní JSON API ve stylu programování, který voláme trasu do kódu. Jedná se o novou možnost pro vývojáře, kteří chtějí jednoduchým způsobem vytvářet základní rozhraní API JSON. Například webová aplikace, která má pouze několik koncových bodů, se může rozhodnout, že místo plné funkčnosti ASP.NET Core MVC použije směrování na kód:
endpoints.MapGet("/weather/{city:alpha}", async context =>
{
var city = (string)context.Request.RouteValues["city"];
var weather = GetFromDatabase(city);
await context.Response.WriteAsJsonAsync(weather);
});
System.Diagnostics.Activity
Výchozí formát pro System.Diagnostics.Activity teď je výchozí ve formátu W3C. Díky tomu je podpora distribuovaného trasování ve výchozím nastavení ASP.NET Core interoperabilní s více architekturami.
Pochází zBodyAttribute
FromBodyAttribute teď podporuje konfiguraci možnosti, která umožňuje považovat tyto parametry nebo vlastnosti za volitelné:
public IActionResult Post([FromBody(EmptyBodyBehavior = EmptyBodyBehavior.Allow)]
MyModel model)
{
...
}
Různá vylepšení
Začali jsme používat poznámky s možnou hodnotou null u ASP.NET základních sestavení. Plánujeme anotovat většinu běžných veřejných rozhraní API rozhraní .NET 5 Framework.
Řízení aktivace spouštěcí třídy
Bylo přidáno další UseStartup přetížení, které umožňuje aplikaci poskytnout metodu továrny pro řízení Startup
aktivace třídy. Řízení Startup
aktivace třídy je užitečné k předání dalších parametrů Startup
, které jsou inicializovány spolu s hostitelem:
public class Program
{
public static async Task Main(string[] args)
{
var logger = CreateLogger();
var host = Host.CreateDefaultBuilder()
.ConfigureWebHost(builder =>
{
builder.UseStartup(context => new Startup(logger));
})
.Build();
await host.RunAsync();
}
}
Automatická aktualizace pomocí dotnet watch
V .NET 5 spuštění dotnet watch v projektu ASP.NET Core spustí výchozí prohlížeč a automaticky aktualizuje prohlížeč, protože se v kódu provádějí změny. To znamená, že můžete:
- Otevřete projekt ASP.NET Core v textovém editoru.
- Spusťte
dotnet watch
. - Zaměřte se na změny kódu, zatímco nástroje zpracovávají opětovné sestavení, restartování a opětovné načtení aplikace.
Formátovač protokolovacího nástroje konzoly
Vylepšili jsme poskytovatele protokolu konzoly v knihovně Microsoft.Extensions.Logging
. Vývojáři teď můžou implementovat vlastní ConsoleFormatter
kontrolu nad formátováním a obarvením výstupu konzoly. Rozhraní API formátovače umožňují bohaté formátování implementací podmnožina řídicích sekvencí VT-100. Většina moderních terminálů podporuje VT-100. Nástroj pro protokolování konzoly může parsovat řídicí sekvence na nepodporovaných terminálech, což vývojářům umožňuje vytvořit jeden formátovací modul pro všechny terminály.
Protokolovací modul konzoly JSON
Kromě podpory vlastních formátovacích souborů jsme také přidali integrovaný formátovací modul JSON, který do konzoly generuje strukturované protokoly JSON. Následující kód ukazuje, jak přepnout z výchozího protokolovacího nástroje na JSON:
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureLogging(logging =>
{
logging.AddJsonConsole(options =>
{
options.JsonWriterOptions = new JsonWriterOptions()
{ Indented = true };
});
})
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
Zprávy protokolu generované do konzoly jsou formátované ve formátu JSON:
{
"EventId": 0,
"LogLevel": "Information",
"Category": "Microsoft.Hosting.Lifetime",
"Message": "Now listening on: https://localhost:5001",
"State": {
"Message": "Now listening on: https://localhost:5001",
"address": "https://localhost:5001",
"{OriginalFormat}": "Now listening on: {address}"
}
}