之前,做传统的 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() .UseApplicationInsights() .Build(); host.Run(); } }
-
.UseKestrel()
使用Kestrel
做为 web应用程序的 HTTP 服务器,其实 ASP.NET Core 自带了两个不同的 HTTP 服务器:Microsoft.AspNetCore.Server.Kestrel (支持跨平台)
Microsoft.AspNetCore.Server.WebListener (仅 Windows 可用)
.UseContentRoot(Directory.GetCurrentDirectory())
设置应用程序的根目录,该目录存放的是应用自身内部所需的资源(需要注意和WebRootPath
的区别,WebRootPath
指向的目录用于存放可以通过HTTP请求访问的资源,一般是wwwroot
文件夹)。.UseIISIntegration()
让应用程序支持在IIS 里边运行(其实是把IIS 当一个反向代理来用),如果应用程序不在IIS 里边跑,可以把这行删掉。-
.UseStartup<Startup>()
指定应用程序的启动类,Startup
是 ASP.NET Core应用程序启动过程中一个非常、非常重要的类。ASP.NET Core 没有强制对这个类进行类型约束,但是对这个类有一个约定,必须有下边两个方法:ConfigureServices(IServiceCollection services)
Configure(IApplicationBuilder app);
.UseApplicationInsights()
使用 Application Insights ,个人感觉不上微软的云 这个选项用处不大,可以去掉。.Build();
开始构造 WebHost, 事实上这个构造是一个很复杂的过程,后续再仔细研究。