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

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

[[392373]]

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

 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 中,如下代码所示:

  1. public class Program 
  2.     { 
  3.         public static void Main(string[] args) 
  4.         { 
  5.             CreateHostBuilder(args).Build().Run(); 
  6.         } 
  7.  
  8.         public static IHostBuilder CreateHostBuilder(string[] args) => 
  9.             Host.CreateDefaultBuilder(args) 
  10.                 .ConfigureWebHostDefaults(webBuilder => 
  11.                 { 
  12.                     webBuilder.UseHttpSys(options => 
  13.                     { 
  14.                         options.Authentication.Schemes = Microsoft.AspNetCore.Server.HttpSys.AuthenticationSchemes.None; 
  15.                         options.Authentication.AllowAnonymous = true
  16.                         options.MaxConnections = 100; 
  17.                         options.MaxRequestBodySize = 1000000; 
  18.                         options.UrlPrefixes.Add("http://localhost:5000"); 
  19.                     }); 
  20.  
  21.                     webBuilder.UseStartup<Startup>(); 
  22.                 }); 
  23.     } 

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

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

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

 

责任编辑:武晓燕 来源: 码农读书
相关推荐

2021-03-17 09:45:31

LazyCacheWindows

2021-02-06 21:40:13

SignalR通讯TypeScript

2021-02-02 16:19:08

Serilog日志框架

2021-01-31 22:56:50

FromServiceASP

2021-03-10 09:40:43

LamarASP容器

2021-01-07 07:39:07

工具接口 Swagger

2021-02-03 13:35:25

ASPweb程序

2021-03-03 22:37:16

MediatR中介者模式

2021-01-28 22:39:35

LoggerMessa开源框架

2021-02-28 20:56:37

NCache缓存框架

2021-02-07 17:29:04

监视文件接口

2021-06-22 16:59:56

微软.NETC# 软件开发

2021-01-26 14:57:00

中间件应用模块化

2021-01-04 05:44:54

框架日志

2017-10-20 08:52:11

内存缓存并发模式Linux

2022-08-01 08:00:00

开发工具跟踪侦听器

2009-02-05 14:02:46

SmtpMail发送邮件ASP.NET

2021-04-14 07:35:12

Json格式化日期

2021-11-01 14:52:38

ElasticSear索引SQL

2009-03-30 10:34:03

ASP.NETMySQL
点赞
收藏

51CTO技术栈公众号