Programovanie

Ako implementovať webový server HTTP.sys v ASP.Net Core

ASP.Net Core je otvorený, medziplatformový, štíhly a modulárny rámec pre vytváranie vysoko výkonných webových aplikácií. Kestrel je multiplatformový webový server pre ASP.Net Core, ktorý je predvolene zahrnutý. Má to však obmedzenia.

Aby ste tieto obmedzenia obišli, navrhujem vám použiť HTTP.sys, server HTTP iba ​​pre Windows založený na ovládači jadra HTTP.sys, ktorý je vyspelejší, bezpečnejší a škálovateľnejší.

Prečo by ste mali používať HTTP.sys

Zvyčajne potrebujete súbor HTTP.sys, keď musíte vystaviť svoj server vonkajšiemu svetu bez IIS (Microsoft Internet Information Services). Požiadavky najskôr prídu do súboru HTTP.sys postaveného na ovládači režimu jadra HTTP.sys. HTTP.sys zase vytvorí frontu, ako aj individuálny fond aplikácií pre každú žiadosť na základe žiadosti.

HTTP.sys môžete tiež použiť, keď potrebujete funkciu, ktorú Kestrel nepodporuje. Medzi funkcie podporované protokolom HTTP.sys patria:

  1. Windows Authentication
  2. Webové zásuvky
  3. Zdieľanie príspevkov
  4. HTTPS
  5. Uloženie odpovede do pamäte cache
  6. Priamy prenos súborov

Začnite projekt v HTTP.sys

Ak používate Visual Studio 2017, postupujte podľa týchto krokov na vytvorenie projektu ASP.Net Core Web API:

  1. V prostredí Visual Studio IDE vyberte položky Súbor> Nové> Projekt.
  2. V zozname zobrazených šablón vyberte webovú aplikáciu ASP.Net Core (.Net Core).
  3. Ako názov projektu zadajte UsingHTTPSysInCode.
  4. Kliknutím na tlačidlo OK projekt uložíte.
  5. Vyberte API v okne Nová webová aplikácia .Net Core.
  6. V rozbaľovacej ponuke v hornej časti vyberte verziu ASP.Net Core, ktorú chcete použiť.
  7. Zrušte začiarknutie políčka Povoliť podporu Docker a vyberte možnosť Žiadne overenie, pretože tu nebudete používať žiadne z nich.
  8. Kliknite na tlačidlo OK.

Tieto kroky vytvárajú nový projekt ASP.Net Core s názvom UsingHTTPSysInCode v Visual Studio 2017.

Nakonfigurujte aplikáciu ASP.net Core pre HTTP.sys

Ďalej by ste si mali nainštalovať potrebné balíčky. Najlepším spôsobom, ako to urobiť, je inštalácia metabalíka Microsoft.AspNetCore.All prostredníctvom správcu balíkov NuGet. To zaisťuje, že všetky potrebné balíčky sú nainštalované naraz.

Potom vo svojom projekte otvorte súbor Program.cs. Malo by to vyzerať takto:

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

S nainštalovanými balíkmi nakonfigurujte server HTTP.sys pomocou metódy rozšírenia UseHttpSys z WebHostBuilder v hlavnej metóde pre triedu Program v súbore Program.cs. Tu je postup:

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

Tu je kompletný zdrojový kód triedy Program:

pomocou Microsoft.AspNetCore; pomocou Microsoft.AspNetCore.Hosting; pomocou 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.AllowAnonymous = true; MaxConnections = 100; options.MaxRequestBodySize = 10 000 000; options.UrlPrefixes.Add ("// localhost: 5000");}) .Build (); }}

Nakoniec pri spustení aplikácie nezabudnite správne zvoliť profil spustenia. Predvolený profil spustenia je IIS v Visual Studio. Pre tento príklad vyberte UsingHTTPSysInCode; je to rovnaké ako názov projektu, tak aj menný priestor.

Keď spustíte aplikáciu s profilom spustenia ako UsingHTTPSysInCode, otvorí sa okno konzoly, ktoré zobrazí sériu krokov, ktoré sa vykonajú predtým, ako sa vo vašom webovom prehliadači zobrazí výstup metódy Get metódy ValuesController (za predpokladu, že je to váš predvolený radič).

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