汕头免费建站,成都哪些公司可以做网站,郑州电力高等专科学校在哪个区,WordPress时间格式插件本章是《定制ASP NET 6.0框架系列文章》的第四篇。在本章#xff0c;我们将学习ASP.NET Core的Kestrel配置和自定义HTTPS#xff0c;好我们开始正文。在ASP.NET Core中#xff0c;默认情况下HTTPS处于打开状态#xff0c;这个不是问题#xff0c;我们无需禁用它。因为如果… 本章是《定制ASP NET 6.0框架系列文章》的第四篇。在本章我们将学习ASP.NET Core的Kestrel配置和自定义HTTPS好我们开始正文。在ASP.NET Core中默认情况下HTTPS处于打开状态这个不是问题我们无需禁用它。因为如果你的服务是在防火墙后面是属于后台服务不对外网提供服务启用HTTPS也是有意义的。通常在Windows上启用HTTPS所需的证书是从Windows证书存储库加载的在Linux或Mac上则会从证书文件上加载证书后者更加灵活是我比较推荐的方式。本章包含两个主题Kestrel简介设置Kestrel本文讨论的主题仍然属于ASP.NET Core的宿主(Host)层。技术准备我们通过终端生成一个ASP.NET Core MVC项目dotnet new mvc -n HttpSample -o HttpSample然后用VS Code打开项目cd HttpSample
code .Kestrel简介Kestrel是一个新实现的HTTP服务器它是ASP.NET Core的托管引擎这有别于在IIS上运行的经典的ASP.NET应用程序在.NET Framework据说微软的灵感来自Node.js因为Node.js有一个名为libuv的HTTP服务器。在ASP.NET Core的第一个版本中微软也使用了libuv然后在其顶部添加了一个名为Kestrel的层。此时Node.js 和ASP.NET Core 共享相同的HTTP服务器。随着.NET Core 框架的不断发展和新的.NET Socket的实现Microsoft基于.NET Socket构建了自己的HTTP服务器同时删除了libuv因为libuv不可控也不属于微软这种重新造轮子的现象在大厂司空见惯。现在Kestrel已经发展成熟是一个能运行ASP.NET Core应用的微软系的HTTP服务器。那么IIS现在的角色是什么呢IIS充当起了反向代理将流量转发给Kestrel并管理Kestrel进程。在Linux上我们通常使用NGINX作为Kestrel的反向代理。设置Kestrel接下来我们需要稍微重写默认的WebHostBuilder来设置Kestrel。使用ASP.NET Core 3.0及更高版本Kestrel属于框架默认的配置当然我们可以进行自定义配置。我们看下配置步骤1.配置Kestrel我们先看一下在3.0-5.0版本中如何手动添加和配置Kestrel{public static void Main(string[] args){CreateHostBuilder(args).Build().Run();}public static IHostBuilder CreateHostBuilder(string[] args) Host.CreateDefaultBuilder(args).ConfigureWebHostDefaults(webBuilder {webBuilder.UseKestrel(options {//待配置}).UseStartupStartup();});}上面的代码演示了如何在IWebHostBuilder上调用UseKestrel()方法进行配置我们再看下.NET Core 6.0中的配置方法var builder WebApplication.CreateBuilder(args);builder.WebHost.UseKestrel(options { //待配置});从UseKestrel()方法看新旧版本没有任何区别只是新版本的极简理念让代码更加可读。别忘了我们还要引入System.Net名称空间用以解析IPAddress。2.配置证书了解了Kestrel的配置格式我们来看下具体配置内容builder.WebHost.UseKestrel(options {options.Listen(IPAddress.Loopback, 5000);options.Listen(IPAddress.Loopback, 5001, listenOptions {listenOptions.UseHttps(certificate.pfx,topsecret);});
});在UseKestrel()方法里面我们配置了要侦听的地址和端口对于HTTPS端口5001我们还需要配置如何加载证书certificate.pfx3.创建证书下面要创建一个证书文件。我们打开证书存储库并导出Visual Studio创建的开发证书。它位于当前用户证书下的个人证书右键点击选中项转到“所有任务”然后点击“导出”。在证书导出向导中点击下一步然后点击确定导出私钥然后点击下一步。选择PFX格式然后点击下一步。在这里您需要设置密码与上面代码中使用的密码完全相同。选择文件名和存储文件的位置然后点击“下一步”。最后点击“完成”将证书保存到文件中。注意在生产环境通常我们会把密码存储在某个配置中心为了安全建议密码不要硬编码。回顾以上只是一个小小的定制我们是需要手动配置证书的它适用于想在Docker上或没有IIS或NGINX的环境上面运行我们的程序并且不担心证书存储等安全问题的场景这种配置方法很灵活。另外通常在IIS或NGINX等web服务器运行应用程序我们无需关心ASP.NET Core 6.0中的证书。感谢您的阅读在下一篇文章我们将讨论如何配置ASP.NET CoreWeb应用的宿主环境。