Kako implementirati HTTP.sys web poslužitelj u ASP.Net Core

ASP.Net Core je otvoreni izvor, višeplatformski, vitki i modularni okvir za izgradnju web aplikacija visokih performansi. Kestrel je web-poslužitelj na više platformi za ASP.Net Core koji je prema zadanim postavkama uključen. Međutim, on ima ograničenja.

Da biste zaobišli ta ograničenja, predlažem da koristite HTTP.sys, HTTP poslužitelj samo za Windows zasnovan na pokretačkom programu jezgre HTTP.sys koji je zreliji, sigurniji i skalabilniji.

Zašto biste trebali koristiti HTTP.sys

Uobičajeno vam je potreban HTTP.sys kada morate poslužitelj izložiti vanjskom svijetu bez IIS-a (Microsoft Internet Information Services). Zahtjevi prvo dolaze na HTTP.sys - izgrađen na pokretačkom programu HTTP.sys kernela. HTTP.sys zauzvrat stvara red čekanja, kao i pojedinačno spremište aplikacija za svaki zahtjev na temelju zahtjeva.

HTTP.sys možete koristiti i kada vam je potrebna značajka koju Kestrel ne podržava. Značajke koje podržava HTTP.sys uključuju:

  1. Provjera autentičnosti sustava Windows
  2. Web utičnice
  3. Dijeljenje posta
  4. HTTPS
  5. Predmemoriranje odgovora
  6. Izravni prijenos datoteka

Započnite projekt u HTTP.sys

Ako koristite Visual Studio 2017, slijedite ove korake za stvaranje projekta ASP.Net Core Web API:

  1. U Visual Studio IDE-u odaberite Datoteka> Novo> Projekt.
  2. S popisa prikazanih predložaka odaberite ASP.Net Core Web Application (.Net Core).
  3. Navedite UsingHTTPSysInCode kao naziv projekta.
  4. Kliknite U redu da biste spremili projekt.
  5. Odaberite API u prozoru New .Net Core Web Application.
  6. Na padajućem izborniku na vrhu odaberite verziju ASP.Net Core koju želite koristiti.
  7. Poništite opciju Omogući podršku za Docker i odaberite Nema provjere autentičnosti jer ovdje nećete koristiti nijednu od ovih opcija.
  8. Kliknite U redu.

Ovi koraci stvaraju novi ASP.Net Core projekt nazvan UsingHTTPSysInCode u Visual Studio 2017.

Konfigurirajte aplikaciju ASP.net Core za HTTP.sys

Dalje, trebali biste instalirati potrebne pakete. Najbolji način za to je instaliranje meta-paketa Microsoft.AspNetCore.All putem upravitelja paketa NuGet. To osigurava da se svi potrebni paketi instaliraju odjednom.

Zatim otvorite datoteku Program.cs u svom projektu. To bi trebalo izgledati ovako:

program javne klase {public static void Main (string [] args) {CreateWebHostBuilder (args) .Build (). Run (); } javni statički IWebHostBuilder CreateWebHostBuilder (string [] args) => WebHost.CreateDefaultBuilder (args) .UseStartup (); }

S instaliranim paketima, konfigurirajte HTTP.sys poslužitelj putem metode produženja UseHttpSys WebHostBuilder u metodi Main za klasu Program u datoteci Program.cs. Evo kako:

javna statička praznina Main (string [] args) {CreateWebHostBuilder (args) .Run (); } javni statički IWebHost CreateWebHostBuilder (string [] args) => WebHost.CreateDefaultBuilder (args) .UseStartup () .UseHttpSys (options => {options.Authentication.Schemes = AuthenticationSchemes.None; options.Authentication.Allow. MaxConnections = 100; options.MaxRequestBodySize = 1000000; options.UrlPrefixes.Add ("// localhost: 5000");}) .Build ();

Evo kompletnog izvornog koda klase Program:

pomoću Microsoft.AspNetCore; koristeći Microsoft.AspNetCore.Hosting; pomoću Microsoft.AspNetCore.Server.HttpSys; prostor imena UsingHTTPSysInCode {program javne klase {public static void Main (string [] args) {CreateWebHostBuilder (args) .Run (); } javni statički IWebHost CreateWebHostBuilder (string [] args) => WebHost.CreateDefaultBuilder (args) .UseStartup () .UseHttpSys (options => {options.Authentication.Schemes = AuthenticationSchemes.None; options.Authentication.Allow. MaxConnections = 100; options.MaxRequestBodySize = 1000000; options.UrlPrefixes.Add ("// localhost: 5000");}) .Build ();}}

Konačno, prilikom pokretanja aplikacije osigurajte da ste na odgovarajući način odabrali profil pokretanja. Zadani profil pokretanja je IIS u Visual Studiju. Odaberite Korištenje HTTPSysInCode za ovaj primjer; to je isto kao naziv projekta kao i prostor imena.

Kada pokrenete aplikaciju s profilom pokretanja kao UsingHTTPSysInCode, otvara se prozor konzole koji prikazuje niz koraka koji se izvršavaju prije nego što vidite izlaz metode Get ValuesController (pod pretpostavkom da je to vaš zadani kontroler) u vašem web pregledniku.