So implementieren Sie den Webserver HTTP.sys in ASP.Net Core

ASP.Net Core ist ein plattformübergreifendes, schlankes und modulares Open Source-Framework zum Erstellen leistungsstarker Webanwendungen. Kestrel ist ein plattformübergreifender Webserver für ASP.Net Core, der standardmäßig enthalten ist. Es gibt jedoch Einschränkungen.

Um diese Einschränkungen zu umgehen, empfehlen wir die Verwendung von HTTP.sys, einem reinen Windows-HTTP-Server, der auf dem Kerneltreiber HTTP.sys basiert und ausgereifter, sicherer und skalierbarer ist.

Warum sollten Sie HTTP.sys verwenden?

In der Regel benötigen Sie HTTP.sys, wenn Sie Ihren Server der Außenwelt ohne IIS (Microsoft Internet Information Services) aussetzen müssen. Die Anforderungen werden zuerst an HTTP.sys gesendet, das auf dem HTTP.sys-Kernelmodustreiber basiert. HTTP.sys erstellt wiederum eine Warteschlange sowie einen individuellen Anwendungspool für jede Anforderung basierend auf der Anforderung.

Sie können HTTP.sys auch verwenden, wenn Sie eine Funktion benötigen, die von Kestrel nicht unterstützt wird. Zu den von HTTP.sys unterstützten Funktionen gehören:

  1. Windows-Authentifizierung
  2. Web Sockets
  3. Post-Sharing
  4. HTTPS
  5. Antwort-Caching
  6. Direkte Dateiübertragung

Starten Sie ein Projekt in HTTP.sys

Wenn Sie Visual Studio 2017 ausführen, führen Sie die folgenden Schritte aus, um ein ASP.Net Core-Web-API-Projekt zu erstellen:

  1. Wählen Sie in der Visual Studio-IDE Datei> Neu> Projekt.
  2. Wählen Sie ASP.Net Core-Webanwendung (.Net Core) aus der Liste der angezeigten Vorlagen aus.
  3. Geben Sie UsingHTTPSysInCode als Namen für das Projekt an.
  4. Klicken Sie auf OK, um das Projekt zu speichern.
  5. Wählen Sie im Fenster Neue .NET Core-Webanwendung die API aus.
  6. Wählen Sie im Dropdown-Menü oben die Version von ASP.Net Core aus, die Sie verwenden möchten.
  7. Deaktivieren Sie Docker-Unterstützung aktivieren und wählen Sie Keine Authentifizierung aus, da Sie hier keine dieser Optionen verwenden.
  8. OK klicken.

Mit diesen Schritten wird ein neues ASP.Net-Kernprojekt mit dem Namen UsingHTTPSysInCode in Visual Studio 2017 erstellt.

Konfigurieren Sie die ASP.net Core-Anwendung für HTTP.sys

Als nächstes sollten Sie die benötigten Pakete installieren. Der beste Weg, dies zu tun, besteht darin, das Microsoft.AspNetCore.All-Metapaket über den NuGet-Paketmanager zu installieren. Dies stellt sicher, dass alle erforderlichen Pakete auf einmal installiert werden.

Öffnen Sie dann die Datei Program.cs in Ihrem Projekt. Es sollte so aussehen:

public class Program {public statisch void Main (string [] args) {CreateWebHostBuilder (args) .Build (). Run (); } public static IWebHostBuilder CreateWebHostBuilder (string [] args) => WebHost.CreateDefaultBuilder (args) .UseStartup (); }}

Konfigurieren Sie bei installierten Paketen den HTTP.sys-Server über die UseHttpSys-Erweiterungsmethode von WebHostBuilder in der Main-Methode für die Program-Klasse in der Datei Program.cs. Hier ist wie:

public static void Main (string [] args) {CreateWebHostBuilder (args) .Run (); } public static IWebHost CreateWebHostBuilder (string [] args) => WebHost.CreateDefaultBuilder (args) .UseStartup () .UseHttpSys (options => {options.Authentication.Schemes = AuthenticationSchemes.None; options.Authentication.AllowAnonymous = MaxConnections = 100; options.MaxRequestBodySize = 1000000; options.UrlPrefixes.Add ("// localhost: 5000");}) .Build ();

Hier ist der vollständige Quellcode der Programmklasse:

Verwenden von Microsoft.AspNetCore; using Microsoft.AspNetCore.Hosting; Verwenden von Microsoft.AspNetCore.Server.HttpSys; Namespace UsingHTTPSysInCode {public class Program {public statisch void Main (string [] args) {CreateWebHostBuilder (args) .Run (); } public static IWebHost CreateWebHostBuilder (string [] args) => WebHost.CreateDefaultBuilder (args) .UseStartup () .UseHttpSys (options => {options.Authentication.Schemes = AuthenticationSchemes.None; options.Authentication.AllowAnonymous = options.Authentication.AllowAnonymous = MaxConnections = 100; options.MaxRequestBodySize = 1000000; options.UrlPrefixes.Add ("// localhost: 5000");}) .Build ();}}

Stellen Sie schließlich beim Ausführen der Anwendung sicher, dass Sie das Startprofil entsprechend auswählen. Das Standardstartprofil ist IIS in Visual Studio. Wählen Sie für dieses Beispiel UsingHTTPSysInCode aus. Es entspricht dem Namen des Projekts sowie dem Namespace.

Wenn Sie die Anwendung mit dem Startprofil UsingHTTPSysInCode ausführen, wird ein Konsolenfenster geöffnet, in dem die ausgeführten Schritte angezeigt werden, bevor die Ausgabe der Get-Methode des ValuesController (vorausgesetzt, dies ist Ihr Standardcontroller) in Ihrem Webbrowser angezeigt wird.