Kestrel 是一个跨平台的适用于 ASP.NET Core 的 Web 服务器。它内置集成在了 ASP.NET Core 项目模板中,所以编写和对外开放一个 Web 服务会非常简单。
虽然不推荐直接使用 Kestrel 对外提供 Web 服务,但为了简单的话,临时使用也是非常不错的选择。
Kestrel 是一个跨平台的适用于 ASP.NET Core 的 Web 服务器。
Kestrel 只是一个 Web 服务器,能够提供对外的 Web 服务;但它没有反向代理功能。也就是说当你使用 Kestrel 指定了一个端口后,这个端口的所有流量将被 Kestrel 处理,不能再与其他 Web 服务程序共用端口了。当然还有一些其他的原因(比如 Web 安全防护),所以通常并不推荐直接使用 Kestrel 对外提供 Web 服务。
但有一点——Kestrel 内置集成在了 ASP.NET Core 项目模板中,所以编写和对外开放一个 Web 服务会非常简单,这也使得 Kestrel 值得被临时使用一下。
配置 Kestrel
当你使用 dotnet 命令或者 Visual Studio 创建 ASP.NET Core 项目后,在 ConfigureWebHostDefaults
扩展方法的委托参数中,使用 webBuilder
对象可以用来配置 Kestrel 服务器。
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
++ webBuilder.ConfigureKestrel(serverOptions =>
++ {
++ // 在这里设置 Kestrel 的一些配置属性。
++ })
.UseStartup<Startup>();
});
配置 https
配置 Kestrel 时,只需要调用 serverOptions
的 Listen
方法设置监听的 IP 和端口。并且,可以额外写一个委托用来设置监听参数。
使用 listenOptions.UseHttps
即可使用 SSL 证书来支持 https 协议。
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.ConfigureKestrel(serverOptions =>
{
++ serverOptions.Listen(IPAddress.Any, 5000, listenOptions =>
++ {
++ listenOptions.UseHttps(
++ @"D:\blog.walterlv.com\ssl\blog-walterlv-com.pfx",
++ "Hqh#Q*QqV%@aCnx41UB%M31H");
++ });
})
.UseStartup<Startup>();
});
这种把密码写在代码中的做法一定要拖出去打&