Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Den här artikeln belyser de viktigaste ändringarna i ASP.NET Core i .NET 5 med länkar till relevant dokumentation.
ASP.NET Core MVC och Razor förbättringar
Modellbindning av DateTime som UTC
Modellbindningen stöder nu bindning av UTC-tidssträngar till DateTime. Om begäran innehåller en UTC-tidssträng binder modellbindningen den till en UTC DateTime. Följande tidssträng är till exempel bunden till UTC DateTime: https://example.com/mycontroller/myaction?time=2019-06-14T02%3A30%3A04.0576719Z
Modellbindning och validering med C# 9-rekordtyper
C# 9-posttyper kan användas med modellbindning i en MVC-styrenhet eller en Razor sida. Rekordtyper är ett bra sätt att ändamålsenligt representera data som överförs via nätverket.
Till exempel använder följande PersonController posttypen Person med modellbindning och formulärverifiering.
public record Person([Required] string Name, [Range(0, 150)] int Age);
public class PersonController
{
   public IActionResult Index() => View();
   [HttpPost]
   public IActionResult Index(Person person)
   {
          // ...
   }
}
Filen 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" />
Förbättringar av DynamicRouteValueTransformer
ASP.NET Core 3.1 introducerades DynamicRouteValueTransformer som ett sätt att använda anpassad slutpunkt för att dynamiskt välja en MVC-kontrollantåtgärd eller en Razor sida. .NET 5-appar kan skicka tillstånd till en DynamicRouteValueTransformer och filtrera den uppsättning slutpunkter som valts.
Miscellaneous
- Attributet [Jämför] kan tillämpas på egenskaper i en Razor sidmodell.
 - Parametrar och egenskaper som är bundna från brödtexten anses som standard nödvändiga.
 
Webb-API
OpenAPI-specifikation på som standard
OpenAPI-specifikation är en branschstandard för att beskriva HTTP-API:er och integrera dem i komplexa affärsprocesser eller med tredje part. OpenAPI stöds i stor utsträckning av alla molnleverantörer och många API-register. Appar som genererar OpenAPI-dokument från webb-API:er har en mängd nya möjligheter där dessa API:er kan användas. I samarbete med underhållarna av projektet Swashbuckle.AspNetCore med öppen källkod innehåller mallen ASP.NET Core API ett NuGet-beroende av Swashbuckle. Swashbuckle är ett populärt NuGet-paket med öppen källkod som genererar OpenAPI-dokument dynamiskt. Swashbuckle gör detta genom att introspektera över API-kontrollanterna och generera OpenAPI-dokumentet vid körning eller vid byggtid med hjälp av Swashbuckle CLI.
I .NET 5 aktiverar webb-API-mallarna OpenAPI-stöd som standard. Så här inaktiverar du OpenAPI:
Från kommandoraden:
dotnet new webapi --no-openapi trueFrån Visual Studio: Avmarkera Aktivera OpenAPI-stöd.
Alla .csproj filer som skapats för webb-API-projekt innehåller nuget-paketreferensen Swashbuckle.AspNetCore .
<ItemGroup>
    <PackageReference Include="Swashbuckle.AspNetCore" Version="5.5.1" />
</ItemGroup>
Den mallgenererade koden innehåller kod i Startup.ConfigureServices som aktiverar OpenAPI-dokumentgenerering:
public void ConfigureServices(IServiceCollection services)
{
    services.AddControllers();
    services.AddSwaggerGen(c =>
    {
        c.SwaggerDoc("v1", new OpenApiInfo { Title = "WebApp1", Version = "v1" });
    });
}
Metoden Startup.Configure lägger till Swashbuckle-mellanprogrammet, vilket möjliggör följande:
- Dokumentgenereringsprocess.
 - Swagger UI:s sida visas som standard i utvecklingsläge.
 
Den mallgenererade koden kommer inte av misstag att exponera API:ets beskrivning vid publicering till produktionsmiljön.
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();
    });
}
Import av Azure API-hantering
När ASP.NET Core API-projekt aktiverar OpenAPI erbjuder Visual Studio 2019 version 16.8 eller senare publicering automatiskt ytterligare ett steg i publiceringsflödet. Utvecklare som använder Azure API Management har möjlighet att automatiskt importera API:erna till Azure API Management under publiceringsflödet:
              
              
            
Bättre startupplevelse för webb-API-projekt
Med OpenAPI aktiverat som standard förbättras appstartupplevelsen (F5) avsevärt för webb-API-utvecklare. Med .NET 5 är webb-API-mallen förkonfigurerad för att läsa in swagger-användargränssnittssidan. Sidan Swagger UI innehåller både dokumentationen som lagts till för det publicerade API:et och aktiverar testning av API:erna med ett enda klick.
              
              
            
Blazor
Prestandaförbättringar
För .NET 5 har vi gjort betydande förbättringar av .NET WebAssembly-körningsprestanda med särskilt fokus på komplex UI-rendering och JSON-serialisering. I våra prestandatester Blazor WebAssembly är i .NET 5 två till tre gånger snabbare för de flesta scenarier. Mer information finns i ASP.NET Blogg: ASP.NET Core-uppdateringar i .NET 5 Release Candidate 1.
CSS-isolering
Blazor har nu stöd för att definiera CSS-format som är begränsade till en viss komponent. Komponentspecifika CSS-format gör det enklare att resonera om formaten i en app och undvika oavsiktliga biverkningar av globala format. Mer information finns i ASP.NET Core Blazor CSS-isolering.
Ny InputFile komponent
Komponenten InputFile tillåter läsning av en eller flera filer som valts av en användare för uppladdning. Mer information finns i ASP.NET Core-filuppladdningarBlazor.
Nya InputRadio komponenter och InputRadioGroup komponenter
              Blazor har inbyggda InputRadio och InputRadioGroup komponenter som underlättar databindning till grupper av alternativknappar med integrerad validering. Mer information hittar du i ASP.NET Core Blazor indatakomponenter.
Komponentvirtualisering
Förbättra den upplevda prestandan för komponentrendering med hjälp av Blazor ramverkets inbyggda virtualiseringsstöd. Mer information finns i ASP.NET Core Razor-komponentvirtualisering.
              ontoggle händelsesupport
              Blazor händelser stöder nu DOM-händelsen ontoggle . Mer information finns i ASP.NET Core Blazor händelsehantering.
Ange fokus för användargränssnittet i Blazor appar
              FocusAsync Använd bekvämlighetsmetoden för elementreferenser för att ange användargränssnittets fokus till det elementet. Mer information finns i ASP.NET Core Blazor händelsehantering.
CSS-klassattribut för anpassad validering
CsS-klassattribut för anpassad validering är användbara när du integrerar med CSS-ramverk, till exempel Bootstrap. Mer information finns i ASP.NET Core Blazor formulärverifiering.
Stöd för IAsyncDisposable
Razor komponenter stöder nu IAsyncDisposable-gränssnittet för den asynkrona frisättningen av allokerade resurser.
JavaScript-isolering och objektreferenser
Blazor aktiverar JavaScript-isolering i JavaScript-standardmoduler. Mer information finns i Anropa JavaScript-funktioner från .NET-metoder i ASP.NET Core Blazor.
Formulärkomponenter stöder visningsnamn
Följande inbyggda komponenter stöder visningsnamn med parametern DisplayName :
InputDateInputNumberInputSelect
Mer information finns i översikten över ASP.NET Core-formulärBlazor.
Allomfattande vägparametrar
Generella rutparametrar, som hanterar sökvägar över flera mappgränser, stöds i komponenter. Mer information finns i ASP.NET Core-routning Blazor och navigering.
Felsökningsförbättringar
Felsökning av Blazor WebAssembly appar har förbättrats i .NET 5. Dessutom stöds felsökning nu i Visual Studio för Mac. Mer information finns i Felsöka ASP.NET Core Blazor-appar.
Microsoft Identity v2.0 och MSAL v2.0
              Blazor säkerhet använder nu Microsoft Identity v2.0 (Microsoft.Identity.Web och Microsoft.Identity.Web.UI) och MSAL v2.0. För mer information, se ämnena i Blazor Säkerhet och Identity noden.
Skyddad webbläsarlagring för Blazor Server
Blazor Server appar kan nu använda inbyggt stöd för att lagra apptillstånd i webbläsaren som har skyddats från manipulering med hjälp av ASP.NET Core-dataskydd. Data kan lagras i antingen lokal webbläsarlagring eller sessionslagring. Mer information finns i översikten över ASP.NET Core Blazor State Management och ASP.NET Core-tillståndshantering Blazor på serversidan.
Blazor WebAssembly förberäkning
Komponentintegrering har förbättrats mellan värdmodeller och Blazor WebAssembly appar kan nu förrendera utdata på servern.
Förbättringar av trimning/länkning
Blazor WebAssembly utför trimning/länkning av mellanliggande språk (IL) under en byggprocess för att trimma onödig IL-kod från appens utmatningssamlingar. Med lanseringen av .NET 5, utför Blazor WebAssembly förbättrad trimning med ytterligare konfigurationsalternativ. Mer information finns i Konfigurera Trimmer för ASP.NET Core Blazor - och Trimningsalternativ.
Kompatibilitetsanalys för webbläsare
Blazor WebAssembly appar riktar sig mot hela .NET API-ytan, men inte alla .NET-API:er stöds på WebAssembly på grund av webbläsarens sandbox-begränsningar. API:er som inte stöds genererar PlatformNotSupportedException när de körs på WebAssembly. En plattformskompatibilitetsanalys varnar utvecklaren när appen använder API:er som inte stöds av appens målplattformar. Mer information finns i Razor.
Lazy load-sammansättningar
Blazor WebAssembly Appstartprestanda kan förbättras genom att skjuta upp inläsningen av vissa programsammansättningar tills de krävs. Mer information finns i Lazy load assemblies in ASP.NET Core Blazor WebAssembly.
Stöd för globalisering har uppdaterats
Globaliseringsstöd är tillgängligt för Blazor WebAssembly baserat på Internationella komponenter för Unicode (ICU). Mer information finns i ASP.NET Core Blazor globalisering och lokalisering.
gRPC
Många prestandaförbättringar har gjorts i gRPC. Mer information finns i gRPC-prestandaförbättringar i .NET 5.
Mer gRPC-information finns i Översikt för gRPC på .NET.
SignalR
SignalR Hubbfilter
SignalR Hubbfilter, som kallas hubbpipelines i ASP.NET SignalR, är en funktion som gör att kod kan köras före och efter hubbmetoder anropas. Att köra kod före och efter hubbmetoder anropas liknar hur mellanprogram har möjlighet att köra kod före och efter en HTTP-begäran. Vanliga användningsområden är loggning, felhantering och argumentverifiering.
Mer information finns i Använda hubbfilter i ASP.NET Core SignalR.
SignalR parallell hubanrop
ASP.NET Core SignalR kan nu hantera parallella hubbanrop. Standardbeteendet kan ändras så att klienter kan anropa fler än en hubbmetod i taget:
public void ConfigureServices(IServiceCollection services)
{
    services.AddSignalR(options =>
    {
        options.MaximumParallelInvocationsPerClient = 5;
    });
}
Stöd för Messagepack har lagts till i SignalR Java-klienten
Ett nytt paket, com.microsoft.signalr.messagepack, lägger till MessagePack-stöd till SignalR Java-klienten. Om du vill använda protokollet MessagePack hub lägger du till .withHubProtocol(new MessagePackHubProtocol()) i anslutningsverktyget:
HubConnection hubConnection = HubConnectionBuilder.create(
                           "http://localhost:53353/MyHub")
               .withHubProtocol(new MessagePackHubProtocol())
               .build();
Kestrel
Inläsningsbara slutpunkter via konfiguration: Kestrel kan identifiera ändringar i konfigurationen som skickas till KestrelServerOptions.Configure och ta bort bindning från befintliga slutpunkter och binda till nya slutpunkter utan att kräva en omstart av programmet när parametern
reloadOnChangeärtrue. Som standard när du använder ConfigureWebHostDefaults eller CreateDefaultBuilder, Kestrel binds till konfigurationsunderavsnittet "Kestrel" medreloadOnChangeaktiverat. Appar måste skickareloadOnChange: truenär de anroparKestrelServerOptions.Configuremanuellt för att få inläsningsbara slutpunkter.Förbättringar av HTTP/2-svarshuvuden. Mer information finns i Prestandaförbättringar i nästa avsnitt.
Stöd för ytterligare slutpunktstyper i sockets-transporten: Om du lägger till det nya API:et som introducerades i System.Net.Socketstillåter sockets standardtransporten i Kestrel bindning till både befintliga filhandtag och Unix-domänsocketer. Stöd för bindning till befintliga filhandtag möjliggör användning av den befintliga
Systemdintegreringen utan att transportenlibuvkrävs.Anpassad dekodning av sidhuvuden i Kestrel: Appar kan ange vilken Encoding som ska användas för att tolka inkommande headers baserat på rubriknamnet istället för att använda UTF-8 som standard. Ange vilken
Microsoft.AspNetCore.Server.Kestrel.KestrelServerOptions.RequestHeaderEncodingSelectorkodning som ska användas för egenskapen: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 slutpunktsspecifika alternativ via konfiguration
Stöd har lagts till för att Kestrelkonfigurera slutpunktsspecifika alternativ via konfiguration. De slutpunktsspecifika konfigurationerna innehåller:
- HTTP-protokoll som används
 - TLS-protokoll som används
 - Certifikatet har valts
 - Klientcertifikatläge
 
Med konfigurationen kan du ange vilket certifikat som väljs baserat på det angivna servernamnet. Servernamnet är en del av SNI-tillägget (Server Name Indication) till TLS-protokollet som anges av klienten. KestrelKonfigurationen stöder också ett jokerteckenprefix i värdnamnet.
I följande exempel visas hur du anger slutpunktsspecifik med hjälp av en konfigurationsfil:
{
  "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",
          }
        }
      }
    }
  }
}
Servernamnindikering (SNI) är ett TLS-tillägg för att inkludera en virtuell domän som en del av SSL-förhandling. Det innebär i praktiken att det virtuella domännamnet, eller ett värdnamn, kan användas för att identifiera nätverksslutpunkten.
Prestandaförbättringar
HTTP/2
Betydande minskningar av allokeringar i HTTP/2-kodvägen.
Stöd för dynamisk HPack-komprimering av HTTP/2-svarshuvuden i Kestrel. Mer information finns i Rubriktabellstorlek och HPACK: den tysta mördaren (funktionen) i HTTP/2.
Skicka HTTP/2 PING-ramar: HTTP/2 har en mekanism för att skicka PING-ramar för att säkerställa att en inaktiv anslutning fortfarande fungerar. Att säkerställa en livskraftig anslutning är särskilt användbart när du arbetar med långlivade strömmar som ofta är inaktiva men bara tillfälligt ser aktivitet, till exempel gRPC-strömmar. Appar kan skicka periodiska PING-ramar genom att Kestrel ange gränser för 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>(); });
Containers
Innan .NET 5, skapa och publicera en Dockerfile för en ASP.NET Core-app krävs att du hämtar hela .NET Core SDK och ASP.NET Core-avbildningen. Med den här versionen minskas hämtning av bytes för SDK-avbildningar och bytes som hämtas för ASP.NET Core-avbildningen elimineras nästan helt. Mer information finns i den här GitHub-problemkommentären.
Autentisering och auktorisering
Microsoft Entra ID-autentisering med Microsoft.Identity. webb
De ASP.NET Core-projektmallarna integreras nu med Microsoft.Identity.Web för att hantera autentisering med Microsoft Entra-ID. Microsoft.Identity. Webbpaketet innehåller:
- En bättre upplevelse för autentisering via Microsoft Entra-ID.
 - Ett enklare sätt att komma åt Azure-resurser på uppdrag av dina användare, inklusive Microsoft Graph. Se Microsoft.Identity. Webbexempel, som börjar med en enkel inloggning och avancerar via multitenans, använder Azure API:er, Microsoft Graph och skyddar dina egna API:er. 
              
Microsoft.Identity.Webär tillgängligt tillsammans med .NET 5. 
Tillåt anonym åtkomst till en slutpunkt
Tilläggsmetoden AllowAnonymous tillåter anonym åtkomst till en slutpunkt:
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();
    });
}
Anpassad hantering av auktoriseringsfel
Anpassad hantering av auktoriseringsfel är nu enklare med det nya IAuthorizationMiddlewareResultHandler gränssnittet som anropas av Authorization Middleware (UseAuthorization). Standardimplementeringen är densamma, men en anpassad hanterare kan registreras med beroendeinmatning, vilket tillåter anpassade HTTP-svar baserat på ett auktoriseringsfel. Se SampleAuthorizationMiddlewareResultHandler.cs (referenskälla) för en demonstration av IAuthorizationMiddlewareResultHandler.
Note
Dokumentationslänkar till .NET-referenskällan läser vanligtvis in lagringsplatsens standardgren, vilket representerar den aktuella utvecklingen för nästa version av .NET. Om du vill välja en tagg för en specifik version använder du listrutan Välj bland grenar eller taggar. Mer information finns i Så här väljer du en versionstagg för ASP.NET Core-källkod (dotnet/AspNetCore.Docs #26205).
Auktorisering vid användning av slutpunktsroutning
Auktorisering när du använder slutpunktsroutning tar nu emot HttpContext snarare än slutpunktsinstansen. Detta gör att mellanprogrammet för auktorisering kan komma åt RouteData och andra egenskaper för de HttpContext som inte var tillgängliga i Endpoint klassen. Slutpunkten kan hämtas från context med hjälp av context.GetEndpoint.
Rollbaserad åtkomstkontroll med Kerberos-autentisering och LDAP i Linux
Se Kerberos-autentisering och rollbaserad åtkomstkontroll (RBAC)
API-förbättringar
JSON-tilläggsmetoder för HttpRequest och HttpResponse
JSON-data kan läsas och skrivas till från en HttpRequest och HttpResponse med hjälp av de nya ReadFromJsonAsync metoderna och WriteAsJsonAsync tilläggsmetoderna. Dessa tilläggsmetoder använder System.Text.Json-serialiseraren för att hantera JSON-data. Den nya HasJsonContentType tilläggsmetoden kan också kontrollera om en begäran har en JSON-innehållstyp.
JSON-tilläggsmetoderna kan kombineras med slutpunktsroutning för att skapa JSON-API:er i ett programmeringsformat som vi anropar väg till kod. Det är ett nytt alternativ för utvecklare som vill skapa grundläggande JSON-API:er på ett enkelt sätt. Till exempel kan en webbapp som bara har en handfull slutpunkter välja att använda väg till kod i stället för de fullständiga funktionerna i ASP.NET Core MVC:
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
Standardformatet för System.Diagnostics.Activity är nu W3C-formatet som standard. Detta gör distribuerat spårningsstöd i ASP.NET Core interoperabelt med fler ramverk som standard.
FromBodyAttribute
FromBodyAttribute har nu stöd för att konfigurera ett alternativ som gör att dessa parametrar eller egenskaper kan betraktas som valfria:
public IActionResult Post([FromBody(EmptyBodyBehavior = EmptyBodyBehavior.Allow)]
                          MyModel model)
{
    ...
}
Diverse förbättringar
Vi har börjat tillämpa ogiltiga anteckningar på ASP.NET Core-sammansättningar. Vi planerar att kommentera det mesta av den gemensamma offentliga API-ytan i .NET 5-ramverket.
Kontrollera aktiveringen av startklassen
En ytterligare UseStartup överbelastning har lagts till som gör att en app kan tillhandahålla en fabriksmetod för att kontrollera aktivering av Startup klasser. Det är användbart att styra Startup klassaktiveringen för att skicka ytterligare parametrar till Startup som initieras tillsammans med värden:
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();
    }
}
Automatisk uppdatering med dotnet watch
I .NET 5 startar körning av dotnet watch på ett ASP.NET Core-projekt både standardwebbläsaren och uppdaterar webbläsaren automatiskt när ändringar görs i koden. Det innebär att du kan:
- Öppna ett ASP.NET Core-projekt i en textredigerare.
 - Kör 
dotnet watch. - Fokusera på kodändringarna medan verktygen hanterar återskapande, omstart och inläsning av appen igen.
 
Formatterare för konsolloggar
Förbättringar har gjorts för konsolloggprovidern i Microsoft.Extensions.Logging biblioteket. Utvecklare kan nu implementera en anpassad ConsoleFormatter för att utöva fullständig kontroll över formatering och färgläggning av konsolutdata. Formaterings-API:erna tillåter omfattande formatering genom att implementera en delmängd av VT-100-escape-sekvenserna. VT-100 stöds av de flesta moderna terminaler. Konsolloggaren kan parsa ut escape-sekvenser på terminaler som inte stöds så att utvecklare kan skapa en enda formatering för alla terminaler.
Konsolloggare för JSON
Förutom stöd för anpassade formateringar har vi även lagt till en inbyggd JSON-formaterare som genererar strukturerade JSON-loggar till konsolen. Följande kod visar hur du växlar från standardloggaren till 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>();
  });
Loggmeddelanden som skickas till konsolen är JSON-formaterade:
{
  "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}"
  }
}
Brytande förändringar
Använd artiklarna i Icke-bakåtkompatibla ändringar i .NET för att hitta icke-bakåtkompatibla ändringar som kan gälla när du uppgraderar en app till en nyare version av .NET.
ASP.NET Core