Programiranje

Kako implementirati spletni strežnik HTTP.sys v ASP.Net Core

ASP.Net Core je odprtokodni, medplatformni, vitki in modularni okvir za izdelavo visoko zmogljivih spletnih aplikacij. Kestrel je spletni strežnik za več platform ASP.Net Core, ki je privzeto vključen. Vendar ima omejitve.

Če se želite izogniti tem omejitvam, predlagam, da uporabite HTTP.sys, strežnik HTTP samo za Windows, ki temelji na gonilniku jedra HTTP.sys in je bolj zrel, varen in razširljiv.

Zakaj bi morali uporabljati HTTP.sys

Običajno potrebujete HTTP.sys, ko morate strežnik izpostaviti zunanjemu svetu brez IIS (Microsoft Internet Information Services). Zahteve najprej pridejo na HTTP.sys - zgrajen na gonilniku načina jedra HTTP.sys. HTTP.sys pa za vsako zahtevo na podlagi zahteve ustvari čakalno vrsto in posamezno področje aplikacij.

HTTP.sys lahko uporabite tudi, kadar potrebujete funkcijo, ki je Kestrel ne podpira. Funkcije, ki jih podpira HTTP.sys, vključujejo:

  1. Preverjanje pristnosti sistema Windows
  2. Spletne vtičnice
  3. Skupna raba objav
  4. HTTPS
  5. Predpomnjenje odziva
  6. Neposreden prenos datotek

Začnite projekt v HTTP.sys

Če uporabljate Visual Studio 2017, sledite tem korakom, da ustvarite projekt ASP.Net Core Web API:

  1. V Visual Studio IDE izberite Datoteka> Novo> Projekt.
  2. Na seznamu prikazanih predlog izberite spletno aplikacijo ASP.Net Core (.Net Core).
  3. Kot ime projekta podajte Uporaba HTTPSysInCode.
  4. Kliknite V redu, da shranite projekt.
  5. V oknu New .Net Core Web Application izberite API.
  6. V spustnem meniju na vrhu izberite različico ASP.Net Core, ki jo želite uporabiti.
  7. Počistite polje Enable Docker Support in izberite No Authentication, ker tukaj ne boste uporabljali nobenega od teh.
  8. Kliknite V redu.

Ti koraki ustvarijo nov osnovni projekt ASP.Net z imenom UsingHTTPSysInCode v Visual Studio 2017.

Konfigurirajte aplikacijo ASP.net Core za HTTP.sys

Nato namestite pakete, ki jih potrebujete. Najboljši način za to je namestitev meta-paketa Microsoft.AspNetCore.All prek upravitelja paketov NuGet. To zagotavlja, da so vsi potrebni paketi nameščeni naenkrat.

Nato v projektu odprite datoteko Program.cs. To bi moralo izgledati takole:

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

Z nameščenimi paketi konfigurirajte strežnik HTTP.sys prek metode razširitve UseHttpSys WebHostBuilder v glavni metodi za razred programa v datoteki Program.cs. Takole:

javna statična praznina Main (string [] args) {CreateWebHostBuilder (args) .Run (); } javni statični 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 ();

Tu je celotna izvorna koda razreda Program:

z uporabo Microsoft.AspNetCore; z uporabo Microsoft.AspNetCore.Hosting; z uporabo Microsoft.AspNetCore.Server.HttpSys; imenski prostor Uporaba HTTPSysInCode {program javnega razreda {javna statična praznina Main (string [] args) {CreateWebHostBuilder (args) .Run (); } javni statični 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 (); }}

Na koncu, ko zaženete aplikacijo, poskrbite, da ste ustrezno izbrali profil zagona. Privzeti profil zagona je IIS v Visual Studio. Za ta primer izberite Uporaba HTTPSysInCode; je enako kot ime projekta kot tudi imenski prostor.

Ko zaženete aplikacijo s profilom zagona kot UsingHTTPSysInCode, se odpre okno konzole, ki prikazuje vrsto korakov, ki se izvajajo, preden v spletnem brskalniku vidite izhod metode Get funkcije ValuesController (ob predpostavki, da je to vaš privzeti krmilnik).

$config[zx-auto] not found$config[zx-overlay] not found