2

之前,做传统的 ASP.NE 开发的时候很多人都不知道 Asp.Net 的程序入口在哪儿, 因为找不到传说当中的 Main 函数。但是在 ASP.NET Core 中,Main 函数被暴漏出来了, 它默认被放在Program.cs里边,长这个样子:

  public class Program
    {
        public static void Main(string[] args)
        {
            var host = new WebHostBuilder()
                .UseKestrel()
                .UseContentRoot(Directory.GetCurrentDirectory())
                .UseIISIntegration()
                .UseStartup<Startup>()
                .UseApplicationInsights()
                .Build();

            host.Run();
        }
    }
  1. .UseKestrel() 使用 Kestrel 做为 web应用程序的 HTTP 服务器,其实 ASP.NET Core 自带了两个不同的 HTTP 服务器:

    • Microsoft.AspNetCore.Server.Kestrel (支持跨平台)

    • Microsoft.AspNetCore.Server.WebListener (仅 Windows 可用)

  2. .UseContentRoot(Directory.GetCurrentDirectory()) 设置应用程序的根目录,该目录存放的是应用自身内部所需的资源(需要注意和 WebRootPath 的区别,WebRootPath指向的目录用于存放可以通过HTTP请求访问的资源,一般是 wwwroot 文件夹)。

  3. .UseIISIntegration() 让应用程序支持在IIS 里边运行(其实是把IIS 当一个反向代理来用),如果应用程序不在IIS 里边跑,可以把这行删掉。

  4. .UseStartup<Startup>() 指定应用程序的启动类, Startup 是 ASP.NET Core应用程序启动过程中一个非常、非常重要的类。ASP.NET Core 没有强制对这个类进行类型约束,但是对这个类有一个约定,必须有下边两个方法:

    • ConfigureServices(IServiceCollection services)

    • Configure(IApplicationBuilder app);

  5. .UseApplicationInsights() 使用 Application Insights ,个人感觉不上微软的云 这个选项用处不大,可以去掉。

  6. .Build(); 开始构造 WebHost, 事实上这个构造是一个很复杂的过程,后续再仔细研究。


miaochw
11 声望2 粉丝

其实我是一个很低调的人!