Programování

Jak implementovat webový server HTTP.sys v ASP.Net Core

ASP.Net Core je otevřený, multiplatformní, štíhlý a modulární rámec pro vytváření vysoce výkonných webových aplikací. Kestrel je multiplatformní webový server pro ASP.Net Core, který je ve výchozím nastavení zahrnut. Má však svá omezení.

Chcete-li tato omezení obejít, navrhuji použít HTTP.sys, server HTTP pouze pro Windows založený na ovladači jádra HTTP.sys, který je vyspělejší, bezpečnější a škálovatelnější.

Proč byste měli používat HTTP.sys

Obvykle potřebujete HTTP.sys, když musíte vystavit svůj server vnějšímu světu bez IIS (Microsoft Internet Information Services). Požadavky nejprve přicházejí do protokolu HTTP.sys - postaveného na ovladači režimu jádra HTTP.sys. HTTP.sys zase vytvoří frontu i individuální fond aplikací pro každý požadavek na základě požadavku.

HTTP.sys můžete také použít, když potřebujete funkci, kterou Kestrel nepodporuje. Mezi funkce podporované protokolem HTTP.sys patří:

  1. Ověření Windows
  2. Webové zásuvky
  3. Sdílení příspěvků
  4. HTTPS
  5. Ukládání odpovědí do mezipaměti
  6. Přímý přenos souborů

Získejte projekt spuštěný v HTTP.sys

Pokud používáte Visual Studio 2017, vytvořte projekt webového API ASP.Net Core takto:

  1. V Visual Studio IDE zvolte Soubor> Nový> Projekt.
  2. Ze seznamu zobrazených šablon vyberte webovou aplikaci ASP.Net Core (.Net Core).
  3. Jako název projektu zadejte UsingHTTPSysInCode.
  4. Kliknutím na OK projekt uložíte.
  5. Vyberte API v okně Nová webová aplikace .NET.
  6. V rozevírací nabídce nahoře vyberte verzi ASP.Net Core, kterou chcete použít.
  7. Zrušte zaškrtnutí políčka Povolit podporu Dockeru a vyberte možnost Žádné ověřování, protože zde nebudete používat žádné z nich.
  8. Klikněte na OK.

Tyto kroky vytvoří nový projekt ASP.Net Core s názvem UsingHTTPSysInCode v sadě Visual Studio 2017.

Nakonfigurujte aplikaci ASP.net Core pro HTTP.sys

Dále byste měli nainstalovat potřebné balíčky. Nejlepší způsob, jak to udělat, je nainstalovat balíček metadat Microsoft.AspNetCore.All prostřednictvím správce balíčků NuGet. Tím je zajištěno, že jsou všechny potřebné balíčky nainstalovány najednou.

Poté ve svém projektu otevřete soubor Program.cs. Mělo by to vypadat 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 nainstalovanými balíčky nakonfigurujte server HTTP.sys pomocí metody rozšíření UseHttpSys WebHostBuilder v hlavní metodě pro třídu Program v souboru Program.cs. Zde 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 ();

Tady je kompletní zdrojový kód třídy Program:

pomocí Microsoft.AspNetCore; pomocí Microsoft.AspNetCore.Hosting; pomocí 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 (); }}

Nakonec při spuštění aplikace zkontrolujte, zda jste správně vybrali profil spuštění. Výchozí profil spuštění je IIS v sadě Visual Studio. V tomto příkladu vyberte UsingHTTPSysInCode; je stejný jako název projektu i jmenný prostor.

Když spustíte aplikaci s profilem spuštění jako UsingHTTPSysInCode, otevře se okno konzoly, které zobrazí řadu prováděných kroků, než se ve vašem webovém prohlížeči zobrazí výstup metody Get z ValuesController (za předpokladu, že je to váš výchozí řadič).

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