Kestrel 的作用
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
namespace HelloDemo
{
public class Program
{
public static void Main(string[] args)
{
// build按照给定的配置初始化主机对象
// Run 以阻塞的方式运行,直到到我们关闭进程
CreateHostBuilder(args).Build().Run();
// Start以非阻塞方式运行。
//CreateHostBuilder(args).Build().Start();
//Console.WriteLine("Web主机已运行");
}
/// <summary>
/// 知识盲点:
/// 1, Kestrel 是一个跨平台的高性能的适用于Asp netcore 的Web服务器
/// </summary>
/// <param name="args"></param>
/// <returns></returns>
public static IHostBuilder CreateHostBuilder(string[] args) =>
// CreateDefaultBuilder创建默认主机生成器、
// 两种主机:通用主机、Web主机
// 1个区别:不提供HTTP服务,Web主机提供
// 把我们的内容根目录设置为 当前程序运行的目录
// 加载主机配置(环境变量、命令行参数)
// 加载应用配置
// 创建默认通用主机生成器
Host.CreateDefaultBuilder(args)
// 重写和增强CreateDefaultBuilder定义的配置
// 增强的配置方法、
// ConfigureWebHostDefaults 干了哪些事情
// 加载前缀为“ASPNETCORE”的环境变量
// 将Kestrel设置为WEB服务器,并对其配置。
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.ConfigureLogging((context, builder) => builder.SetMinimumLevel(LogLevel.Debug));
/// 设置请求文件的最大数值
webBuilder.ConfigureKestrel((context, options) => options.Limits.MaxRequestBodySize = null);
///1.主机配置项的优先级:配置文件、命令行、硬编码、环境变量
///2.命令行的启动方式: dotnet *.dll -urls "http://*0000";
webBuilder.UseUrls("http://*:3000");
// 指定了Web应用到的启动类
webBuilder.UseStartup<Startup>();
});
}
}