当前位置:首页 > IT科技

如何在 ASP.Net Core 中使用 HTTP.sys WebServer ?

本文转载自微信公众号「码农读书」,使用作者码农读书。使用转载本文请联系码农读书公众号。使用

 ASP.Net Core 是使用一个开源的,跨平台的使用,轻量级模块化框架,使用可用它来构建高性能的使用Web程序,大家都知道 Kestrel 是使用 ASP.Net Core 内置的跨平台web服务器,但是使用它有一定的局限性,比如不支持 端口共享 ,使用 WebSockets 等等,那怎么办呢?使用

如果你的亿华云web仅需部署在 windows 上。 如果你只需轻量级的使用web服务器。 如果你需要更多的使用 Kestrel 没有的功能。

可以尝试用 HTTP.sys,使用它可以作为 Kestrel 在 windows 上的使用替代产品。

为什么要使用 HTTP.sys

首先看一下 HTTP.sys 的部署方式,如下图所示:

从图中可以看出 HTTP.sys 可以让 Web 直接对外提供服务,无需传统的重量级IIS,请求首先会达到 HTTP.sys,然后内部会为 请求 创建一个队列和一个应用程序池。

接下来看看 HTTP.sys 所包含的特性。云服务器

windows 验证 WebSockets 端口共享 基于SNI的HTTPS 响应缓存 直接文件传输

ASP.net Core 中配置 HTTP.sys

其实配置非常简单,在构建 webHost 的过程中使用 UseHttpSys 将 HTTP.sys 引入到 ASP.net Core 中,如下代码所示:

public class Program     {          public static void Main(string[] args)         {              CreateHostBuilder(args).Build().Run();         }         public static IHostBuilder CreateHostBuilder(string[] args) =>             Host.CreateDefaultBuilder(args)                 .ConfigureWebHostDefaults(webBuilder =>                 {                      webBuilder.UseHttpSys(options =>                     {                          options.Authentication.Schemes = Microsoft.AspNetCore.Server.HttpSys.AuthenticationSchemes.None;                         options.Authentication.AllowAnonymous = true;                         options.MaxConnections = 100;                         options.MaxRequestBodySize = 1000000;                         options.UrlPrefixes.Add("http://localhost:5000");                     });                     webBuilder.UseStartup<Startup>();                 });     } 

值得注意的是,在跑程序之前,一定要在 launchSettings 中选择合适的节点,因为 Visual Studio 默认会用 IIS Express 执行,所以这里选择 WebApplication3 就可以了。

接下来就可以把程序跑起来,如下图所示:

从图中的 warn: Microsoft.AspNetCore.Server.HttpSys.MessagePump[37] 可以看出,当前已成功用 HTTP.sys 作为web服务器。

分享到:

滇ICP备2023006006号-16