Dela via


Nyheter i ASP.NET Core 2.1

Den här artikeln belyser de viktigaste ändringarna i ASP.NET Core 2.1, med länkar till relevant dokumentation.

SignalR

SignalR har skrivits om för ASP.NET Core 2.1.

ASP.NET Core SignalR innehåller ett antal förbättringar:

  • En förenklad utskalningsmodell.
  • En ny JavaScript-klient utan jQuery-beroende.
  • Ett nytt kompakt binärt protokoll baserat på MessagePack.
  • Stöd för anpassade protokoll.
  • En ny strömningssvarsmodell.
  • Stöd för klienter baserade på bare WebSockets.

Mer information finns i ASP.NET Core SignalR.

Razor klassbibliotek

ASP.NET Core 2.1 gör det enklare att skapa och inkludera Razor-baserat användargränssnitt i ett bibliotek och dela det i flera projekt. Med den nya Razor SDK:n kan du skapa Razor filer i ett klassbiblioteksprojekt som kan paketeras i ett NuGet-paket. Vyer och sidor i bibliotek identifieras automatiskt och kan åsidosättas av appen. Genom att integrera kompilering Razor i bygget:

  • Starttiden för appen är betydligt snabbare.
  • Snabba uppdateringar av Razor vyer och sidor vid körning är fortfarande tillgängliga som en del av ett iterativt arbetsflöde för utveckling.

Mer information finns i Återanvändbart Razor användargränssnitt i klassbibliotek med ASP.NET Core.

Identity UI-bibliotek & scaffolding

ASP.NET Core 2.1 tillhandahåller ASP.NET Core Identity som ett Razor klassbibliotek. Appar som innehåller Identity kan använda den nya Identity scaffolder för att selektivt lägga till källkoden IdentityRazor som finns i klassbiblioteket (RCL). Du kanske vill generera källkod så att du kan ändra koden och ändra beteendet. Du kan till exempel instruera byggnadsställningen att generera koden som används i registreringen. Genererad kod har företräde framför samma kod i Identity RCL.

Appar som inte innehåller autentisering kan använda Identity byggnadsställningen för att lägga till RCL-paketet Identity . Du kan välja kod som Identity ska genereras.

Mer information finns i Scaffold Identity i ASP.NET Core-projekt.

HTTPS

Med det ökade fokuset på säkerhet och sekretess är det viktigt att aktivera HTTPS för webbappar. HTTPS-tillämpningen blir allt striktare på webben. Webbplatser som inte använder HTTPS anses vara osäkra. Webbläsare (Chromium, Mozilla) börjar framtvinga att webbfunktioner måste användas från en säker kontext. GDPR kräver användning av HTTPS för att skydda användarsekretessen. Det är viktigt att använda HTTPS i produktion, men att använda HTTPS under utveckling kan hjälpa till att förhindra problem i distributionen (till exempel osäkra länkar). ASP.NET Core 2.1 innehåller ett antal förbättringar som gör det enklare att använda HTTPS under utveckling och för att konfigurera HTTPS i produktion. Mer information finns i Framtvinga HTTPS.

På som standard

För att underlätta säker webbplatsutveckling är HTTPS nu aktiverat som standard. Från och med 2.1 Kestrel lyssnar på https://localhost:5001 när ett lokalt utvecklingscertifikat finns. Ett utvecklingscertifikat skapas:

  • Som en del av den första körningen av .NET Core SDK när du använder SDK:t för första gången.
  • Använd det nya dev-certs verktyget manuellt.

Kör dotnet dev-certs https --trust för att lita på certifikatet.

HTTPS-omdirigering och tillämpning

Webbappar behöver vanligtvis lyssna på både HTTP och HTTPS, men omdirigera sedan all HTTP-trafik till HTTPS. I 2.1 har specialiserade HTTPS-omdirigeringsmellanprogram som omdirigeras intelligent baserat på förekomsten av konfigurations- eller bundna serverportar introducerats.

Användning av HTTPS kan tillämpas ytterligare med hjälp av HTTP Strict Transport Security Protocol (HSTS). HSTS instruerar webbläsare att alltid komma åt webbplatsen via HTTPS. ASP.NET Core 2.1 lägger till HSTS-mellanprogram som stöder alternativ för max ålder, underdomäner och HSTS-förinläsningslistan.

Konfiguration för produktion

I produktion måste HTTPS konfigureras explicit. I 2.1 har standardkonfigurationsschemat för att konfigurera HTTPS för Kestrel lagts till. Appar kan konfigureras att använda:

GDPR

ASP.NET Core tillhandahåller API:er och mallar som hjälper dig att uppfylla vissa av KRAVEN för EU:s allmänna dataskyddsförordning (GDPR). Mer information finns i GDPR-stöd i ASP.NET Core. En exempelapp visar hur du använder och låter dig testa de flesta GDPR-tilläggspunkter och API:er som lagts till i mallarna ASP.NET Core 2.1.

Integreringstester

Ett nytt paket introduceras som effektiviserar skapande och körning av test. Microsoft.AspNetCore.Mvc.Testing-paketet hanterar följande uppgifter:

  • Kopierar beroendefilen (*.deps) från den testade appen till testprojektets bin-mapp .
  • Anger innehållsroten till den testade appens projektrot så att statiska filer och sidor/vyer hittas när testerna körs.
  • WebApplicationFactory<TEntryPoint> Ger klassen för att effektivisera bootstrapping av den testade appen med TestServer.

I följande test används xUnit för att kontrollera att indexsidan läses in med en statuskod för lyckad och med rätt rubrik för innehållstyp:

public class BasicTests
    : IClassFixture<WebApplicationFactory<RazorPagesProject.Startup>>
{
    private readonly HttpClient _client;

    public BasicTests(WebApplicationFactory<RazorPagesProject.Startup> factory)
    {
        _client = factory.CreateClient();
    }

    [Fact]
    public async Task GetHomePage()
    {
        // Act
        var response = await _client.GetAsync("/");

        // Assert
        response.EnsureSuccessStatusCode(); // Status Code 200-299
        Assert.Equal("text/html; charset=utf-8",
            response.Content.Headers.ContentType.ToString());
    }
}

Mer information finns i avsnittet Integreringstester .

[ApiController], ActionResult<T>

ASP.NET Core 2.1 lägger till nya programmeringskonventioner som gör det enklare att skapa rena och beskrivande webb-API:er. ActionResult<T> är en ny typ som har lagts till för att tillåta att en app returnerar antingen en svarstyp eller något annat åtgärdsresultat (liknar IActionResult), samtidigt som svarstypen fortfarande anges. Attributet [ApiController] har också lagts till som ett sätt att välja webb-API-specifika konventioner och beteenden.

Mer information finns i Skapa webb-API:er med ASP.NET Core.

IHttpClientFactory

ASP.NET Core 2.1 innehåller en ny IHttpClientFactory tjänst som gör det enklare att konfigurera och använda instanser av HttpClient i appar. HttpClient har redan konceptet att delegera hanterare som kan länkas samman för utgående HTTP-begäranden. Fabriken:

  • Gör registreringen av instanser av HttpClient per namngiven klient mer intuitiv.
  • Implementerar en Polly-hanterare som gör att Polly-principer kan användas för återförsök, CircuitBreakers osv.

Mer information finns i Initiera HTTP-begäranden.

Kestrel libuv-transportkonfiguration

Med lanseringen av ASP.NET Core 2.1 Kestrelbaseras standardtransporten inte längre på Libuv utan baseras i stället på hanterade socketar. Mer information finns i Kestrel implementering av webbserver: Libuv-transportkonfiguration.

Allmän värdbyggare

Generic Host Builder (HostBuilder) har introducerats. Den här byggaren kan användas för appar som inte bearbetar HTTP-begäranden (meddelanden, bakgrundsuppgifter osv.).

Mer information finns i .NET Generic Host.

Uppdaterade SPA-mallar

Mallarna för ensidesprogram för Angular och React uppdateras för att använda standardprojektstrukturerna och byggsystemen för varje ramverk.

Angular-mallen baseras på Angular CLI och React-mallen baseras på create-react-app.

Mer information finns i:

Razor Sidor söker Razor efter tillgångar

I 2.1 Razor söker Razor Pages efter tillgångar (till exempel layouter och delar) i följande kataloger i den angivna ordningen:

  1. Aktuell sidmapp.
  2. /Pages/Shared/
  3. /Views/Shared/

Razor Sidor i ett område

Razor Sidor stöder nu områden. Om du vill se ett exempel på områden skapar du en ny Razor pages-webbapp med enskilda användarkonton. En Razor pages-webbapp med enskilda användarkonton innehåller /Områden/Identity/Sidor.

MVC-kompatibilitetsversion

Med SetCompatibilityVersion metoden kan en app välja eller välja bort potentiellt icke-bakåtkompatibla beteendeändringar som introduceras i ASP.NET Core MVC 2.1 eller senare.

Mer information finns i Kompatibilitetsversion för ASP.NET Core MVC.

Migrera från 2.0 till 2.1

Se Migrera från ASP.NET Core 2.0 till 2.1.

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.

Ytterligare resurser

Den fullständiga listan över ändringar finns i viktig information om ASP.NET Core 2.1.