Jak zaimplementować serwer WWW HTTP.sys w ASP.Net Core

ASP.Net Core to wieloplatformowa, uproszczona i modularna platforma open source do tworzenia wysokowydajnych aplikacji internetowych. Kestrel to wieloplatformowy serwer sieci Web dla ASP.Net Core, który jest domyślnie uwzględniony. Ma jednak ograniczenia.

Aby obejść te ograniczenia, sugeruję użycie HTTP.sys, serwera HTTP działającego tylko w systemie Windows, opartego na sterowniku jądra HTTP.sys, który jest bardziej dojrzały, bezpieczny i skalowalny.

Dlaczego powinieneś używać HTTP.sys

Zazwyczaj plik HTTP.sys jest potrzebny, gdy trzeba udostępnić serwer światu zewnętrznemu bez usług IIS (Microsoft Internet Information Services). Żądania najpierw trafiają do HTTP.sys - zbudowanego na sterowniku trybu jądra HTTP.sys. Z kolei HTTP.sys tworzy kolejkę oraz indywidualną pulę aplikacji dla każdego żądania na podstawie żądania.

Możesz również użyć HTTP.sys, gdy potrzebujesz funkcji, która nie jest obsługiwana przez Kestrel. Funkcje obsługiwane przez HTTP.sys obejmują:

  1. Uwierzytelnianie systemu Windows
  2. Gniazda sieciowe
  3. Udostępnianie wpisów
  4. HTTPS
  5. Buforowanie odpowiedzi
  6. Bezpośrednia transmisja plików

Rozpocznij projekt w HTTP.sys

Jeśli korzystasz z programu Visual Studio 2017, wykonaj następujące kroki, aby utworzyć projekt interfejsu API sieci Web ASP.Net Core:

  1. W środowisku IDE programu Visual Studio wybierz pozycję plik> nowy> projekt.
  2. Z listy wyświetlonych szablonów wybierz opcję ASP.Net Core Web Application (.Net Core).
  3. Określ UsingHTTPSysInCode jako nazwę projektu.
  4. Kliknij OK, aby zapisać projekt.
  5. Wybierz API w oknie Nowa aplikacja internetowa .Net Core.
  6. Wybierz wersję ASP.Net Core, której chcesz używać, z menu rozwijanego u góry.
  7. Odznacz opcję Włącz obsługę platformy Docker i wybierz opcję Bez uwierzytelniania, ponieważ nie będziesz używać żadnego z nich tutaj.
  8. Kliknij OK.

Te kroki umożliwiają utworzenie nowego projektu ASP.Net Core o nazwie UsingHTTPSysInCode w programie Visual Studio 2017.

Skonfiguruj aplikację ASP.net Core pod kątem protokołu HTTP.sys

Następnie zainstaluj potrzebne pakiety. Najlepszym sposobem na to jest zainstalowanie pakietu metapakietu Microsoft.AspNetCore.All za pośrednictwem menedżera pakietów NuGet. Gwarantuje to, że wszystkie niezbędne pakiety zostaną zainstalowane za jednym razem.

Następnie otwórz plik Program.cs w swoim projekcie. To powinno wyglądać tak:

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

Po zainstalowaniu pakietów skonfiguruj serwer HTTP.sys za pomocą metody rozszerzenia UseHttpSys WebHostBuilder w metodzie Main dla klasy Program w pliku Program.cs. Oto jak:

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 = true; options. MaxConnections = 100; options.MaxRequestBodySize = 1000000; options.UrlPrefixes.Add ("// localhost: 5000");}) .Build ();

Oto pełny kod źródłowy klasy Program:

przy użyciu Microsoft.AspNetCore; using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Server.HttpSys; namespace UsingHTTPSysInCode {public class Program {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 = true; options. MaxConnections = 100; options.MaxRequestBodySize = 1000000; options.UrlPrefixes.Add ("// localhost: 5000");}) .Build ();}}

Na koniec, po uruchomieniu aplikacji, upewnij się, że odpowiednio wybierasz profil uruchamiania. Domyślny profil uruchamiania to IIS w programie Visual Studio. W tym przykładzie wybierz UsingHTTPSysInCode; jest taka sama jak nazwa projektu oraz przestrzeń nazw.

Po uruchomieniu aplikacji z profilem uruchamiania jako UsingHTTPSysInCode zostanie otwarte okno konsoli, w którym zostanie wyświetlona seria wykonywanych kroków, zanim zobaczysz dane wyjściowe metody Get elementu ValuesController (zakładając, że jest to domyślny kontroler) w przeglądarce internetowej.