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 的过程中使用 UseHttpSysHTTP.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服务器。

如何在 ASP.Net Core 中使用 HTTP.sys WebServer ?相关推荐

  1. 如何在 ASP.NET Core 中使用 HttpClientFactory ?

    ASP.Net Core 是一个开源的,跨平台的,轻量级模块化框架,可用它来构建高性能的Web程序,这篇文章我们将会讨论如何在 ASP.Net Core 中使用 HttpClientFactory. ...

  2. 如何在 ASP.Net Core 中使用 Autofac

    依赖注入可以有效的实现对象之间的 松耦合 并能够实现代码的可测试和可维护性,ASP.Net Core 提供了一个极简版的容器实现对 依赖注入 的原生支持,然而内置的依赖注入容器相比成熟的 依赖注入容器 ...

  3. 如何在 ASP.Net Core 中使用 Lamar

    ASP.Net Core 自带了一个极简的 开箱即用 的依赖注入容器,实际上,你还可以使用第三方的 依赖注入容器 来替代它,依赖注入是一种设计模式,它能够有效的实现对象之间的解耦并有利于提高单元测试和 ...

  4. 如何在 ASP.Net Core 中使用 MediatR

    MediatR 是一个 中介者模式 的.NET开源实现, 中介者模式 管控了一组对象之间的相互通讯并有效的减少了对象之间错综复杂的相互依赖,在 中介者模式 中,一个对象不需要直接和另一个对象进行通讯, ...

  5. 如何在 ASP.Net Core 中对接 WCF

    在 REST API 出现之前,SOAP (Simple Object Access Protocol) 一直都是基于 web 的标准协议,虽然现在 REST 大行其道,但在平时开发中总会遇到对接第三 ...

  6. 如何在 ASP.Net Core 中使用 NCache

    虽然 ASP.Net Core 中缺少 Cache 对象,但它引入了三种不同的cache方式. 内存缓存 分布式缓存 Response缓存 Alachisoft 公司提供了一个开源项目 NCache, ...

  7. 如何在 ASP.Net Core 中使用 Configuration Provider

    ASP.NET Core 是一个开源的,跨平台的,精简的模块化框架,可用于构建高性能,可扩展的web应用程序, ASP.NET Core 中的数据配置常用 k-v 的形式存储,值得注意的是,新的数据配 ...

  8. 如何在 ASP.Net Core 中使用 Serilog

    记录日志的一个作用就是方便对应用程序进行跟踪和排错调查,在实际应用上都是引入 日志框架,但如果你的 日志文件 包含非结构化的数据,那么查询起来将是一个噩梦,所以需要在记录日志的时候采用结构化方式. 将 ...

  9. 如何在 ASP.NET Core 中使用 URL Rewriting 中间件

    URL rewriting 是根据预先配置好的一组规则去修改 request url,值得注意的是:URL Rewriting 的重写功能和 url 重定向 是两个概念,本篇我们就来讨论下如何在 AS ...

最新文章

  1. Swift中的问号?和感叹号!
  2. java apache压缩多个文件大小_Java压缩多个文件并导出
  3. sqldbx oracle mysql
  4. 网络推广外包专员浅析如何在网络推广外包中获得相关关键词?
  5. php7 mcrypt windows,Windows下php安装mcrypt扩展问题
  6. SQL SERVER 表最小行的一个纠结问题
  7. Java同步—线程池的创建和使用
  8. 部门研发linux sysfs (2)部门研发
  9. vue点击下载图片的实现
  10. ios开发笔记之 emoji表情字符编码集合
  11. Excel VBA与VSTO基础实战指南 VBA和VSTO权威教材
  12. matplotlib绘图技巧详解(三)
  13. 2022网络安全技术自学路线图及职业选择方向
  14. 年薪60w的程序员与年薪6w的极品程序员,差距怎么这么大呢?
  15. MC9S12 硬件设计
  16. 新旧两种方法给年份year,定义一个宏,以判别该年份是否闰年。提示:宏名可以定义为LEAP_YEAR,形参为y,既定义宏的形式为 #define LEAP_YEAR(y)
  17. 给OkHttp Client添加socks代理
  18. Linux中搭建 Postfix 邮件服务器
  19. 253. 会议室 II
  20. 【组件-工具】小程序ui组件Color UI快速入门

热门文章

  1. Active Directory的用户属性说明
  2. windbg工具安装配置及dump抓取
  3. octave中的一些基本操作
  4. 【转】基于 Android NDK 的学习之旅-----数据传输(引用数据类型)
  5. unity的依赖注入
  6. rabbitmq学习:
  7. Windows7 IIS7.5 HTTP Error 503 The service is unavailable 另类解决方案
  8. Teams Developer Portal介绍
  9. [PHP] 多表外连接性能测试及优化
  10. zabbix 3.0.0beta1安装-centos6.8版本