Programmering

Sådan implementeres HTTP.sys webserver i ASP.Net Core

ASP.Net Core er en open source, cross-platform, lean og modulær ramme til opbygning af højtydende webapplikationer. Kestrel er en platform på tværs af platforme til ASP.Net Core, der er inkluderet som standard. Det har dog begrænsninger.

For at omgå disse begrænsninger foreslår jeg, at du bruger HTTP.sys, en Windows-kun HTTP-server baseret på HTTP.sys-kernedriveren, der er mere moden, sikker og skalerbar.

Hvorfor skal du bruge HTTP.sys

Du har typisk brug for HTTP.sys, når du skal udsætte din server for omverdenen uden IIS (Microsoft Internet Information Services). Anmodningerne kommer først til HTTP.sys — bygget på HTTP.sys Kernel-tilstandsdriveren. HTTP.sys skaber igen en kø samt en individuel applikationspulje for hver anmodning baseret på anmodningen.

Du kan også bruge HTTP.sys, når du har brug for en funktion, der ikke understøttes af Kestrel. Funktioner understøttet af HTTP.sys inkluderer:

  1. Windows-godkendelse
  2. Web-stik
  3. Deling af indlæg
  4. HTTPS
  5. Svar caching
  6. Direkte filoverførsel

Kom et projekt i gang i HTTP.sys

Hvis du kører Visual Studio 2017, skal du følge disse trin for at oprette et ASP.Net Core Web API-projekt:

  1. I File Studio IDE skal du vælge Filer> Ny> Projekt.
  2. Vælg ASP.Net Core Web Application (.Net Core) fra listen over skabeloner, der vises.
  3. Angiv Brug af HTTPSysInCode som navnet på projektet.
  4. Klik på OK for at gemme projektet.
  5. Vælg API i vinduet New .Net Core Web Application.
  6. Vælg den version af ASP.Net Core, du vil bruge, fra rullemenuen øverst.
  7. Fjern markeringen af ​​Aktiver Docker-support, og vælg Ingen godkendelse, fordi du ikke bruger nogen af ​​disse her.
  8. Klik på OK.

Disse trin opretter et nyt ASP.Net Core-projekt, der hedder UsingHTTPSysInCode i Visual Studio 2017.

Konfigurer ASP.net Core-applikationen til HTTP.sys

Dernæst skal du installere de pakker, du har brug for. Den bedste måde at gøre dette på er at installere Microsoft.AspNetCore.All metapakken via NuGet pakkehåndtering. Dette sikrer, at alle nødvendige pakker installeres på én gang.

Åbn derefter Program.cs-filen i dit projekt. Det skal se sådan ud:

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

Når pakkerne er installeret, skal du konfigurere HTTP.sys-server via UseHttpSys-udvidelsesmetoden for WebHostBuilder i hovedmetoden til programklassen i Program.cs-filen. Sådan gør du:

public static void Main (string [] args) {CreateWebHostBuilder (args) .Run (); } offentlig statisk IWebHost CreateWebHostBuilder (string [] args) => WebHost.CreateDefaultBuilder (args) .UseStartup () .UseHttpSys (options => {options.Authentication.Schemes = AuthenticationSchemes.None; options.Authentication.AllowAnonym. MaxConnections = 100; optioner.MaxRequestBodySize = 1000000; optioner.UrlPrefixes.Add ("// localhost: 5000");}) .Build ();

Her er den komplette kildekode for programklassen:

ved hjælp af Microsoft.AspNetCore; ved hjælp af Microsoft.AspNetCore.Hosting; ved hjælp af Microsoft.AspNetCore.Server.HttpSys; namespace UsingHTTPSysInCode {public class Program {public static void Main (string [] args) {CreateWebHostBuilder (args) .Run (); } offentlig statisk IWebHost CreateWebHostBuilder (string [] args) => WebHost.CreateDefaultBuilder (args) .UseStartup () .UseHttpSys (options => {options.Authentication.Schemes = AuthenticationSchemes.None; options.Authentication.AllowAnonym. MaxConnections = 100; optioner.MaxRequestBodySize = 1000000; optioner.UrlPrefixes.Add ("// localhost: 5000");}) .Build (); }}

Når du kører applikationen, skal du til sidst sikre dig, at du vælger startprofilen korrekt. Standardstartprofilen er IIS i Visual Studio. Vælg Brug HTTPSysInCode til dette eksempel; det er det samme som projektets navn såvel som navneområdet.

Når du kører applikationen med startprofilen som UsingHTTPSysInCode, åbnes et konsolvindue for at vise den række trin, der udføres, før du ser output fra Get-metoden til ValuesController (forudsat at det er din standardcontroller) i din webbrowser.

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