August 2018

Jahrgang 33, Nummer 8

ASP.NET Core – Neuigkeiten in ASP.NET Core 2.1

Durch Steve Smith

Microsoft hat vor kurzem ASP.NET Core 2.1 zusammen mit .NET Core 2.1 und Entity Framework (EF) Core 2.1 veröffentlicht. In Kombination bieten diese Versionen einige großartigen Verbesserungen in Leistung sowie zusätzliche Features für .NET Core-Entwickler. Microsoft ist darüber hinaus bietet, Long-term Support (LTS) in dieser Version, d. h. es unterstützt drei Jahre bleiben. Dieser Artikel enthält eine Übersicht über die Verbesserungen in ASP.NET Core 2.1. Weitere Informationen zu in EF Core 2.1, sehen Sie sich Data Points-Kolumne dieses Monats von Julie Lerman, "Deep Dive in EF Core HasData Seeding" und ihr Spalte letzten Monat Neuigkeiten (msdn.com/magazine/mt847184) befasst, die das neue EF Core 2.1 Fragen Sie Typ-Funktion ab, die Sie problemlos eine Datenbank Abfragen ohne "true"-Entitäten mit Schlüsseleigenschaften, die Ergebnisse nutzen kann.

Verbesserungen der Razor-Seiten

Ich beginne, indem Sie im Gespräch Verbesserungen der Razor-Seiten, ein neues Feature in ASP.NET Core 2.0, das ich in der September 2017 zu geschrieben (msdn.com/magazine/mt842512). Version 2.1 fügt einige Features, der nicht an die Version 2.0, z. B. die Unterstützung für Seiten-spezifische Ordner für freigegebene Ressourcen zu suchen. Die am häufigsten verwendeten freigegebenen Ressourcen sind Layoutdateien und Teilansichten. Standardmäßig wurden diese im Stammordner Ansichtsdatei in ASP.NET Core 2.0 befindet, obwohl ASP.NET Core MVC diese entdecken würden, wären sie in einem Ordner /Views/Shared abgelegt. In Version 2.1 vorliegt sucht Razor-Seiten jetzt für diese freigegebenen Dateien durch, suchen sie in den folgenden Speicherorten (in Reihenfolge):

  1. Der aktuelle Ordner "Pages"
  2. / Pages/Shared
  3. / Views/Shared

Dadurch können Sie leicht Überschreiben von freigegebenen Assets nach Bedarf, aber wenn Sie Razor-Seiten zu einer vorhandenen MVC-basierten Anwendung hinzufügen, können Sie weiterhin alle vorhandenen freigegebenen Ressourcen zu nutzen, die sie in einem Ordner /Views/Shared hat.

Ein weiteres Feature, das während der Razor-Seiten, die anfänglich ausgeliefert wurde die Unterstützung von Bereichen wurde nicht vorhanden war. Mit ASP.NET Core 2.1 können Sie nun einen Ordner Ansichtsdatei mit Razor-Seiten in jedem Bereich befindet sich im Ordner "/ Areas" Ihrer ASP.NET Core-Anwendung hinzufügen. Microsoft hat auch aktualisiert, die Visual Studio Web Application-Standardvorlage um Bereiche für die Funktionen der geräteidentität zu verwenden, bei der Auswahl von "einzelne Benutzerkonten."

Zusammen, vereinfachen diese Funktionen zum Organisieren von Razor-Seiten im Projektsystem.

Freigegebene Razor-Bibliotheken

Ein weiteres neues Feature in 2.1 ist Unterstützung für Razor-Objekte aus separaten Bibliotheken oder Pakete werden geladen. Trennen von ASP.NET Core-apps beinhalten häufig sowohl allgemeine Ressourcen, z. B. Identitätsfunktionen (Anmeldung, Registrierung, vergessen haben, Kennwort usw.). In der Regel diese allgemeine Features führte zu einer Vielzahl von doppelt vorhandenem Code für einzelne Projekte, was zu höheren technische Schulden. Die neue Razor-Klasse-Bibliothek (RCL) Feature unterstützt das Razor-Dateien erstellen und als zugehörige Projekte oder NuGet-Pakete, die eine beliebige Anzahl von ASP.NET Core-apps nutzen können bereitgestellt werden.

Durch das Hinzufügen dieses Features erstellt der Compiler Razor-Objekten, die automatisch für verknüpfte Objekte in referenzierten Bibliotheken und Paketen suchen. Zuvor waren nicht Razor-Objekte erst erstellt, nach deren und Bereitstellung angefordert wurden. ASP.NET Core 2.1 integriert Razor-Kompilierung in den Buildprozess, was auch schnellere app-Startzeiten führt.

Razor-Assets in RCLs können überschrieben werden, damit, wenn Sie auf diese verwenden, um allgemeine Ressourcen zwischen Projekten freizugeben, können Sie die Möglichkeit, bestimmte Aspekte auf einer Basis pro Projekt anzupassen nicht verlieren. RCLs verwendet für die app Querschnittsthemen wie Layout, Navigation und die Authentifizierung. In der Tat ist die integrierten ASP.NET Core Identity-Funktion nutzen, diese Unterstützung einfacher zwischen Projekten wiederverwendet werden.

Projekt Vorlagenupdates

Die Standardvorlage für Web Application-Projekt enthält einige Änderungen noch nicht erwähnt. Das Dialogfeld "Neues Projekt" enthält nun ein Kontrollkästchen, um anzugeben, ob HTTPS erzwingen möchten. Neue Unterstützung für allgemeine Datenschutz-Grundverordnung (DSGVO) ist standardmäßig enthalten, damit die Projekte enthalten nun Standardseiten für Datenschutz und Cookies Zustimmung Razor Teilansichten. Beachten Sie, dass diese Dokumente einfach Platzhalter – es ist Ihre Aufgabe tatsächliche Richtlinie Ihrer Organisation hinzufügen. Abbildung 1 zeigt ein ganz neues ASP.NET Core 2.1-Projekt, das Identität für einzelne Benutzerkonten verwenden konfiguriert wurde.

Neue Projektstruktur der Web-Anwendung in ASP.NET Core 2.1
Abbildung 1 neue Web Application-Projektstruktur in ASP.NET Core 2.1

Identität als ein Add-On

Wenn Sie die ASP.NET Core Identity-Funktionalität in Ihre app vor der Version 2.1 nutzen möchten, mussten Sie in der Regel stellen die Entscheidung für die Unterstützung dafür hinzuzufügen, wenn Sie Ihre Web-app-Projekt erstellt haben. Wenn Sie Unterstützung für später hinzufügen möchten, würde der Prozess in der Regel ein ganz neues Web-app-Projekt erstellen, mit der entsprechenden Unterstützung (z. B. "einzelne Benutzerkonten"), und kopieren Sie die Dateien aus der neuen app in Ihre vorhandenen app sein. Dies war keine ideale Lösung.

Es handelte sich immer um eine große technische Herausforderung darstellen, für ASP.NET Core (und ASP.NET, zu) zum Hinzufügen von Identity-Support, um einer vorhandenen app teilweise unterstützt werden, da diese Unterstützung Front-End-Razor-Objekte enthalten, die separat gepackt, und Bereitstellen von neuen Assets in konnte kein vorhandene app kann für eine Vielzahl von Gründen fehlschlagen. Durch das Hinzufügen der Unterstützung von RCL muss hinzufügen, dass die Identität zu einer vorhandenen app sehr viel einfacher, als der Prozess nicht mehr wird die vorhandene app neue Razor-Dateien hinzufügen.

Sie können die Gerüstbau-Unterstützung in Visual Studio verwenden, Identität auf vorhandene apps hinzufügen. Neue apps mit den neuesten Vorlagen werden einschließlich identitätsbezogene Seiten/Ansichten im Projekt selbst, anstatt freigegebenen Assets für Razor nutzen. Der Vorteil dieses Ansatzes ist weniger Textbausteine-Dateien in Ihre neue Projekte, aber ohne Datenverlust in Funktionalität oder die Möglichkeit, Verhalten anpassen. Sie haben gesehen, Abbildung1 , dass standardmäßig Unterstützung für nur einen Bereich mit einer einzelnen _ViewStart.cshtml-Datei in ihr hinzufügt. Sie können das Verhalten bestimmter Dateien anpassen, indem Sie mit der rechten Maustaste auf das Projekt, klicken Sie auf Hinzufügen | Neues Gerüstelement, und wählen Sie dann die Identität. Wählen Sie die Seiten, die Sie verwenden möchten, Erstellen des Gerüsts für, und geben Sie die DbContext-Klasse und alle anderen Optionen.

Sie werden sehen, wie ich habe diese Dateien anpassen, wenn es sich bei mir in SignalR.

Verbesserte HTTPS-Unterstützung

Wenn Sie noch nicht HTTPS für Ihre Web-apps verwenden, sollten Sie wahrscheinlich sein. Suchmaschinen und Browser sind jetzt aktiv Höherstufen von Websites, die Verwendung von HTTPS und zum behandeln, die nicht als potenziell unsicher. DSGVO erfordert, dass Websites HTTPS zum Schutz der Privatsphäre des Benutzers. ASP.NET Core 2.1 verstärkt Unterstützung zum Entwickeln und Testen von apps mithilfe von HTTPS, einschließlich erleichtert zur lokalen Verwendung von HTTPS beim Erstellen von apps.

Nach der Installation der .NET Core 2.1 SDK, der ersten Ausführung wird ein Entwicklungszertifikat installiert. Sie können dieses Zertifikat mithilfe des neuen Dotnet Dev-Certs-Tools, die mit dem SDK installiert ist, verwalten. Sobald das Entwicklungszertifikat vertrauenswürdig ist, werden Sie möglicherweise zum Entwickeln und Testen Ihrer ASP.NET Core 2.1-apps, die lokal mithilfe von HTTPS als Ihr Standardprotokoll und datenbankspiegelung genauer auf Ihre produktionsumgebung (wobei natürlich Sie HTTPS verwenden).

Ihre Anwendung kann die Sicherheit weiter verbessern, durch Signalisieren für Browser, dass sie HTTP Strict Transport Security (HSTS) unterstützt. HSTS hilft zu verhindern, dass bestimmte Arten von Angriffen, z. B. "Man in the Middle"-Angriffe durch Signalisieren für Browser, dass alle Antworten für eine bestimmte Anforderung HTTPS-Verbindungen anstelle von einfachen HTTP verwenden müssen. Ohne HSTS möglicherweise sogar auf eine Seite, die über HTTPS bereitgestellt werden Ressourcen umfassen, die immer noch über HTTP verwenden. Diese Ressourcen können ganz einfach ersetzt oder durch Router zwischen dem Benutzer und Server, die den Inhalt, geändert werden, da sie die nicht durch Verschlüsselung geschützt sind. HSTS verhindert, dass diese angriffsmöglichkeit.

HSTS wird mit einer Antwort-Header in die HTTPS-Antwort, der die ursprüngliche Ressource implementiert. Beispiele:

Strict-Transport-Security: max-age=16070400; includeSubDomains

HSTS ist für Ihre ASP.NET Core-Anwendungen mithilfe von Middleware, die konfiguriert standardmäßig in die Anwendungsvorlage "Startup.cs"-Datei aktiviert. Es wird nicht empfohlen, HSTS auf "localhost" verwenden, damit das Standardverhalten die Middleware nur enthält, wenn das Projekt in einer produktionsumgebung ausgeführt wird.

Zusätzlich zu HSTS können Sie auch HTTPS für Ihre Anwendung mithilfe der neuen UseHttpsRedirection Middleware anfordern. Im einfachsten Fall können Sie dies, indem Sie die folgende Zeile Ihrer Configure-Methode in "Startup.cs" hinzufügen:

App.UseHttpsRedirection();

Microsoft empfiehlt diese nun für alle ASP.NET Core-apps, und es ist die Standardeinstellung für die Web Application-Vorlagen. Diese Middleware leitet automatisch Anforderungen, die über HTTP auf HTTPS stammen. Er verwendet die Konventionen zum Ermitteln des entsprechenden HTTPS-Ports, vorausgesetzt, dass nur eine von der app verwendet wird. Alternativ können Sie durch Festlegen der Umgebungsvariable ASPNETCORE_HTTPS_PORT (oder Http_port Konfigurationsschlüssel) oder durch Angabe von Optionen im Code in "configureservices" konfigurieren:

services.AddHttpsRedirection(options => options.HttpsPort = 5555);

Aktualisierte SPA-Vorlagen

Die Anwendungsvorlagen für Single Page Applications (SPAs) wurden aktualisiert, um die neueste empfohlene Vorgehensweisen für Angular und React-apps zu verwenden. Insbesondere die Angular-Vorlage basiert jetzt auf die Angular-Befehlszeilenschnittstelle (CLI), und die React-Vorlagen basieren auf der erstellen-React-app (CRA). Diese SPA-Frameworks liefern häufig die Updates, aktualisieren die integrierten Vorlagen auf die neueste Ansätze hilft dabei, stellen Sie sicher neuen apps mit ihnen bewährte Methoden für jedes Framework zugeordnet.

SignalR

SignalR ist einer beliebten Bibliothek, die sehr einfach, Hinzufügen von Echtzeit-Webfunktionen in ASP.NET-Anwendungen vereinfacht. ASP.NET Core SignalR handelt es sich um eine neue Version von SignalR, die bereitgestellt wird mit ASP.NET Core 2.1. Es bietet eine Reihe von Verbesserungen im Vergleich zu vorherigen Versionen:

  • Keine Abhängigkeit von der clientseitigen jQuery
  • Binäres Protokoll MessagePack basierende
  • Basierend auf Microsoft.AspNetCore.Sockets (nicht "Http")
  • Unterstützt mehrere Formate (vom gleichen Endpunkt)

Die serverseitigen Komponenten von SignalR sind in die Microsoft.AspNetCore.SignalR NuGet-Paket enthalten. Dieses Paket ist im metapaket Microsoft.AspNetCore.App, enthalten, benötigen Sie in der Regel nicht sollten separat hinzugefügt, um Ihre ASP.NET Core-Projekt (vorausgesetzt, Sie verweisen Microsoft.AspNetCore.App Version 2.1 oder höher). SignalR unterstützt mehrere Clients bereitstellen, einschließlich JavaScript auf Webseiten und eine .NET für .NET-Anwendungen. Die empfohlene Methode zum Hinzufügen von JavaScript-Client zu Ihrem Projekt erfolgt über Npm. Wenn, dass Sie Npm installiert haben, können Sie die folgenden Befehle aus, um den Client zu Ihrem Projekt hinzufügen ausführen:

npm init –y
npm install @aspnet/signalr

Der erste Befehl initialisiert, eine Datei "Packages.config" für das Projekt, müssen Sie nur diesen Befehl ausführen, wenn Sie den Npm noch nicht nutzen. Der zweite Befehl lädt den SignalR JavaScript-Client in den Ordner "node_modules" herunter. Sie müssen die signalr.js-Datei von "node_modules" auf einen geeigneten Speicherort in Ihrer ASP.NET Core-app-Ordner "Wwwroot" kopieren, um es in Ihrer app zu verweisen.

SignalR-Demo: Toastbenachrichtigungen

Zur Veranschaulichung, wie einfach es ist mit SignalR, die Einrichtung während ebenfalls aufgezeigt wird wie zum Anpassen des Verhaltens des neuen Pakets an Identität, habe ich eine einfache Demo erstellt. Diese Option eine Benachrichtigung im Browser angezeigt, wenn ein Benutzer registriert oder meldet sich innerhalb oder außerhalb der app. Dieser Benachrichtigung sollte eine beliebige Stelle auf der Website angezeigt werden, ich also so ändern Sie die Datei "_Layout.cshtml", um die clientseitige Skripts, die erforderlich sind. Fügen Sie am unteren Rand der Datei "_Layout.cshtml" Folgendes ein:

<script src="//cdnjs.cloudflare.com/ajax/libs/toastr.js/latest/js/
  toastr.min.js"></script>
<script src="~/lib/signalr/signalr.js"></script>
<script src="~/js/site.js" asp-append-version="true"></script>

Der erste Verweis ist in einer einfachen benachrichtigungsbibliothek namens Toastr, die verwendet werden, um die Benachrichtigungen anzuzeigen. Die zweite ist die signalr.js-Datei aus "node_modules" in der app-Ordner "Wwwroot/Lib/Signalr" kopiert. Das letzte ist der vorhandenen Datei "site.js", die als Teil eines neuen ASP.NET Core-Projekts erstellt wird. Die Reihenfolge dieser Skripts ist wichtig.

Der nächste Schritt ist so ändern Sie site.js zum Hinzufügen des JavaScript-Codes, der erforderlich ist, werden die Nachrichten angezeigt, wenn eine Anforderung vom Server empfangen wird. Es sind drei Schritte am Prozess Beteiligten. Zunächst muss eine Verbindung mit der signalR.HubConnectionBuilder erstellt. Diese Art verwendet das Entwurfsmuster "Builder" zum Konfigurieren der Verbindung mit allen erforderlichen Parametern ein, und klicken Sie dann die Verbindung von der Build-Methode zurückgegeben wird. Als Nächstes konfigurieren Sie die Message-Handler mithilfe der wählen Sie auf-Methode für die Verbindung. Erstellen Sie einen benannten Handler für jedes Verhalten, die der Server initiieren können soll. Zum Schluss initiieren Sie die Verbindung durch Aufrufen der Start-Methode:

const userUpdatesConnection = new signalR.HubConnectionBuilder()
  .withUrl("/userUpdates")
  .build();
userUpdatesConnection.on("ReceiveSignIn", (user) => {
  toastr.options.escapeHtml = true;
  const message = user + " logged in.";
  toastr.info(message, "New Login!");
});
// Additional handlers omitted
userUpdatesConnection.start().catch(err => console.error(err.toString()));

Dieser Code wird auf jeder Seite ausgeführt, der "_Layout.cshtml" verwendet. Nun konfiguriere ich, die Serverseite der Verbindung, die in "Startup.cs" ab. Sie müssen zum Ändern der ConfigureServices-Methode, um die SignalR enthalten (in der Regel nach dem Aufrufen von Diensten. AddMvc):

services.AddSignalR();

In der Methode konfigurieren müssen Sie als Nächstes die SignalR-Routen, nur vor dem Aufrufen der app eingerichtet. UseMvc:

app.UseSignalR(routes =>
{
  routes.MapHub<UsersHub>("/userUpdates");
});
app.UseMvc();

Jetzt ist es Zeit, die UsersHub-Klasse hinzufügen, die ich zuvor auf die verwiesen wird. Sie können diese Klasse einfügen, in einem Ordner Hubs, die eine gängige Methode ist, oder wenn Sie zum Verwenden eines featureordners Ansatzes, wie ich in meinem Artikel "Feature Slices für ASP.NET Core MVC" September 2016 beschrieben erwägen können (msdn.com/magazine/mt763233), und fügen Sie den Hub mit der Seiten/Controller, mit der Funktionsweise. In jedem Fall für dieses Szenario benötigen da der Client an den Hub, Aufrufe ist nicht die Klasse kein tatsächliche Implementierung. Es muss nur das Microsoft.AspNetCore.SignalR.Hub erben:

public class UsersHub : Hub
{
}

Abschließend verwenden Sie den Hub für die Kommunikation mit verbundenen Clients von einer anderen Stelle in der app können Sie Abhängigkeitsinjektion IHubContext < THub > Einfügen in die Klasse, die er benötigt. In diesem Fall verfügen die PageModel-Klassen für die Anmeldung, Abmeldung und registrieren jedes eine Instanz von IHubContext < UsersHub > in ihren Konstruktoren eingefügt.

Um eine Nachricht senden zu können, müssen Sie die HubContext Instanz Zugriff auf die Clients-Eigenschaft, und Senden einer Nachricht an einen bestimmten benannten Handler verwendet. Abbildung 2 zeigt die Implementierung für die Abmeldung "pagemodel" OnPost-Methode.

Abbildung 2: Implementieren der Abmeldung "pagemodel" OnPost-Methode

public async Task<IActionResult> OnPost(string returnUrl = null)
{
  string username = User.Identity.Name;
  await _signInManager.SignOutAsync();
  _logger.LogInformation("User logged out.");
  await _usersHubContext.Clients.All.SendAsync("ReceiveSignOut", username);
  if (returnUrl != null)
  {
    return LocalRedirect(returnUrl);
  }
  else
  {
    return Page();
  }
}

Mit diesen Komponenten beisammen können Sie die Anwendung auszuführen und öffnen Sie verschiedene Browser die app angezeigt. Ein Element zu registrieren Sie, und melden Sie innerhalb und außerhalb der app. Benachrichtigungen, die in den anderen Browsern angezeigt werden sollte. Die linke Hälfte des Abbildung 3 Benachrichtigungen, die in einem Chrome-Browser angezeigt werden, nachdem ein Benutzer, und ein Edge-Browser auf der rechten Seite angemeldet hat angezeigt.

Bei ASP.NET Core SignalR Senden von Benachrichtigungen vom Server zu verbundenen Browsern
Abbildung 3 bei ASP.NET Core SignalR Senden von Benachrichtigungen vom Server zu verbundenen Browsern

Verbesserungen für Tests der Integration

ASP.NET Core verfügt über hervorragende Unterstützung für Integrationstests, die sämtliche im Arbeitsspeicher seit Version 1.0 haben. Allerdings wurde eine Sache, die eine benutzerdefinierte Installation erreichen erforderlich dem TestServer mit dem entsprechenden Inhalt Stammpfad, so konfigurieren, dass es korrekt Ressourcen wie Ansichten innerhalb der Webanwendung gefunden. ASP.NET Core 2.1 stellt einen neuen Typ WebApplicationFactory < T >, wodurch es einfacher, erstellen Sie einen TestServer und eine "HttpClient", die eine Verbindung herstellt. Um die Factory in ein Xunit-Testklasse zu verwenden, implementieren Sie die IClassFixture < WebApplicationFactory < Startup >>-Schnittstelle, die beim Start ist, in dem der Einstiegspunkt für die ASP.NET Core-app, dass Sie testen möchten. Und dann im Konstruktor Klasse, müssen Sie eine WebApplicationFactory < Startup > Einfügen und seine CreateClient-Methode verwenden, um eine Instanz eines Clients zu erhalten. In den Tests, dann können Sie den Client Anforderungen an die Anwendung und stellen Sie sicher, dass die richtige Antwort zurückgegeben wird, wie folgt:

[Fact]
public async Task Get_HomePageReturnSuccessAndCorrectContentType()
{
  var response = await _client.GetAsync("/");
  response.EnsureSuccessStatusCode(); // Status Code 200-299
  Assert.Equal("text/html; charset=utf-8",
    response.Content.Headers.ContentType.ToString());
}

Wenn Sie die Anwendung zum Testen anpassen müssen, z. B. das Ändern der Dienste verwendet werden, oder hinzufügen Seed-Daten, die für Tests verwendet werden, Sie können WebApplicationFactory < T > erben, und dann Ihre benutzerdefinierte Factory in den Tests.

Weitere Verbesserungen

In dieser Version wurde auch Verbesserungen an mehrere andere Komponenten von ASP.NET Core 2.1, einschließlich des integrierten Kestrel-Servers. Kestrel verwendet jetzt verwaltete Sockets für die Standard-Transportschicht anstelle von Libuv. Diese Änderung sollte nahtlose sein, aber wenn es Probleme verursacht, Entwickler können weiterhin konfigurieren Libuv für die Verwendung mit Kestrel.

Eine andere neue Erweiterung für die Komponente Hosten von ASP.NET Core ist die des Typs HostBuilder, die Sie verwenden würden, um nicht-Teile eines Hosts zu konfigurieren. HostBuilder ähnelt der vorhandenen WebHostBuilder, aber nicht, können Sie ein Startup-Klasse aus einem Webprojekt an. Es wurde entwickelt, um häufige Probleme zu lösen wie Dependency Injection, Konfiguration und Protokollierung für nicht-Szenarien wie gehostete Dienste oder konsolenanwendungen konfigurieren.

Abschließend, wenn Sie API-Endpunkte in Ihrer ASP.NET Core-app schreiben, können Sie einige Verbesserungen in 2.1 nutzen. Zunächst können Sie das Attribut [ApiController] einer der Controller hinzufügen, die APIs verfügbar zu machen. Dadurch wird eine Reihe von Funktionen, z. B. auf diese Controller definierten Endpunkte hinzugefügt:

  • Modellvalidierungsfehler werden automatisch BadRequest(ModelState) zurück.
  • Binden von Datenquellen (z. B. [FromBody]), die automatisch für Aktionsparameter abgeleitet.
  • Hochladen von Dateien mithilfe von [FromForm] automatisch ableiten Multipart/Form-Data-Inhaltstyp
  • Beim attributrouting ist erforderlich

Eine weitere Neuerung ist es sich um einen neuen Rückgabetyp ActionResult < T >. Dieser Rückgabetyp wird anstelle der IActionResult verwendet und können Typinformationen in der Methodensignatur einbezogen werden. Diese Informationen können Tools wie beispielsweise Swashbuckle zum Generieren von OpenAPI/Swagger-Dokumentation. Ohne diese Rückgabetyp müssten Sie Methoden mit Anmerkungen versehen, die einfach IActionResult mit dem Attribut [ProducesResponseType] Daten zurückgegeben.

Nächste Schritte

Wenn Sie nicht bereits mit ASP.NET Core 2.1 verwenden, empfehle ich, so bald wie möglich aktualisieren. Sie können das SDK im abrufen microsoft.com/net/download/windows oder führen Sie die Tools, die mithilfe von Docker über eines der Images auf dockr.ly/2MAaiEF. Der aktualisierte Quellcode für dieses Beispiel finden Sie unter bit.ly/2JXdHeV.


Steve Smithist ein unabhängiger Trainer, Mentor und Berater. Er bloggt unter ardalis.com und bietet Tipps Developer, e-Mail-Adressen und Podcast an WeeklyDevTips.com. Testen Sie seine Kurse auf Pluralsight zu erfahren, wie Sie saubereren, Entwickeln von Anwendungen mit höherer Qualität. Folgen Sie ihm auf Twitter: @ardalis.


Diesen Artikel im MSDN Magazine-Forum diskutieren