Zuletzt haben wir ASP.NET Core auf Version 2.1 aktualisiert. Einer der Entwickler der Plattform, unser Kollege David Fowler, teilte einige seiner nützlichen Funktionen mit, über die nur wenige Menschen Bescheid wissen. Zusätzlich zu den 9 geheimen Funktionen von ASP.NET Core finden Sie unter dem Schnitt auch eine Liste der wichtigsten Innovationen mit allen nützlichen Links. Jetzt mitmachen!

Version 2.1 der offenen ASP.NET Core-Plattform wurde veröffentlicht, und Entwickler David Fowler
twitterte einige seiner nützlichen Funktionen, die nur wenige kennen. Natürlich ist die Plattform jetzt schneller, aber es gibt auch eine Reihe neuer Funktionen und Best Practices, die es wert sind, genauer betrachtet zu werden.
ASP.NET Core funktioniert jetzt mit dem neuen Hosting-Modell. .NET-Anwendungen bilden und
starten den Host .
Der Host ist für das Starten von Anwendungen und das Verwalten ihres Lebenszyklus verantwortlich. Das Ziel des generischen Hosts besteht darin, das HTTP-Pipelining von der Webhost-API zu trennen, um mehr Skripts auf dem Host erstellen zu können. Messaging-, Hintergrund- und andere Nicht-HTTP-Aufgaben funktionieren besser mit durchgängigen generischen Host-Funktionen wie Konfiguration, Abhängigkeitsinjektion (DI) und Protokollierung.
Dies bedeutet, dass es jetzt für Skripte ohne Webhosting nicht nur WebHost, sondern auch generischen Host gibt. Gleichzeitig ist die Arbeit so bequem wie mit ASP.NET Core, aber Sie haben auch neue Funktionen wie DI, Protokollierung und Konfiguration. Beispielcode für Generic Host
finden Sie auf GitHub .
Damit können Sie lange Hintergrundvorgänge sowohl auf dem Universalhost als auch in Ihren Webanwendungen ausführen. Mit ASP.NET Core 2.1 wurde
die Unterstützung für die BackgroundService-Basisklasse eingeführt, die die Erstellung einer langen asynchronen Schleife erheblich erleichtert. Der Beispielcode für den gehosteten Dienst befindet sich ebenfalls
auf GitHub .
Erstellen Sie eine einfache temporäre Hintergrundaufgabe:
public Task StartAsync(CancellationToken cancellationToken) { _logger.LogInformation("Timed Background Service is starting."); _timer = new Timer(DoWork, null, TimeSpan.Zero, TimeSpan.FromSeconds(5)); return Task.CompletedTask; }
einfach!
Sie können ASP.NET Core jetzt in einem Windows-Dienst hosten! Viele Benutzer haben darum gebeten, diese Funktion hinzuzufügen. Sie benötigen IIS nicht mehr, um zu hosten, was Sie wollen. Schauen Sie sich
Microsoft.AspNetCore.Hosting.WindowsServices auf NuGet und eine
ausführliche Dokumentation zum Hosten Ihrer eigenen ASP.NET Core-Anwendung unter Windows als Windows-Dienst ohne IIS an.
public static void Main(string[] args) { var pathToExe = Process.GetCurrentProcess().MainModule.FileName; var pathToContentRoot = Path.GetDirectoryName(pathToExe); var host = WebHost.CreateDefaultBuilder(args) .UseContentRoot(pathToContentRoot) .UseStartup<Startup>() .Build(); host.RunAsService(); }
Wie immer eine einfache und genaue Implementierung unter Verwendung einer Quelle auf GitHub.
[assembly: HostingStartup(typeof(SampleStartups.StartupInjection))]
Es wird für Sie interessant sein, achten Sie darauf, auf sie zu achten. Sie können Pakete erstellen, die als Hilfstools für Quellcode verwendet werden, der über eine gemeinsam genutzte Quelle verteilt wird. Wir nennen sie untereinander "Shared Source Packages". Sie werden
in ASP.NET Core überall dort verwendet , wo etwas freigegeben werden muss, aber über die API nicht öffentlich zugänglich sein sollte. Dann wird Ihr Code verwendet, es bestehen jedoch keine Abhängigkeiten vom endgültigen Paket.
Sie werden
auf diese Weise in CSPROJ verwendet. Beachten Sie das
PrivateAssets- Attribut:
<PackageReference Include="Microsoft.Extensions.ClosedGenericMatcher.Sources" PrivateAssets="All" Version="" /> <PackageReference Include="Microsoft.Extensions.ObjectMethodExecutor.Sources" PrivateAssets="All" Version="" />
Wenn Sie eine Methode in einem Typ durch Reflektion verwenden müssen und diese Methode asynchron sein kann, hilft Ihnen die optimierte und flexible
ObjectMethodExecutor- Funktion, die wir überall in der ASP.NET Core-Codebasis verwenden.
Das Team verwendet diesen Code in MVC, um Ihre Controller-Methoden aufzurufen. Sie verwenden diesen Code in SignalR, um Hub-Methoden aufzurufen. Es funktioniert mit synchronen und asynchronen Methoden. Es kann auch mit benutzerdefinierten erwarteten Objekten und asynchronen F # -Workflows arbeiten.
Eine kleine und häufig nachgefragte Methode. Wenn Ihnen das, was nach dem Starten des Dotnet-Treibers beim Hosten der Webanwendung angezeigt wird (Drucken der Bindungsinformationen), nicht gefällt, können Sie die neue SuppressStatusMessages-Erweiterungsmethode verwenden.
WebHost.CreateDefaultBuilder(args) .SuppressStatusMessages(true) .UseStartup<Startup>();
In Version 2.1 ist es einfacher geworden, Parameter zu konfigurieren, für die Dienste erforderlich sind. Früher mussten Sie einen mit IConfigureOptions erhaltenen Typ erstellen, jetzt können Sie dies alles in ConfigureServices mit AddOptions ‹TOptions› tun
public void ConfigureServicdes(IServiceCollection services) { services.AddOptions<MyOptions>() .Configure<IHostingEnvironment>((o,env) => { o.Path = env.WebRootPath; }); }
Normalerweise muss IHttpContext nicht konfiguriert werden, aber viele möchten wissen,
wie das geht , und einige glauben, dass dies automatisch erfolgen sollte. Es wird standardmäßig nicht protokolliert, da seine Anwesenheit zu einer Leistungsminderung führt. In ASP.NET Core 2.1
wurde jedoch PR für die Erweiterungsmethode
hinzugefügt , was
den Prozess erleichtert, wenn Sie möchten.
services.AddHttpContextAccessor ();
ASP.NET Core 2.1
ist also zur Veröffentlichung bereit .
Neue Funktionen in dieser Version:
Weitere Informationen zu diesen Funktionen finden Sie in der
Liste der Änderungen in ASP.NET Core 2.1 in den ASP.NET Core-Dokumenten. Eine vollständige Liste aller Änderungen in der neuen Version finden Sie in den Versionshinweisen.
Probieren Sie es aus! Nehmen Sie
am QuickStart-Kurs teil und Sie können in 10 Minuten grundlegende Webanwendungen erstellen.