本章開始會從空的.net core專案開始介紹,主要參考資料是.net core的官方文件,大家有興趣也可以去看看,都講得非常詳細。
ASP.NET Core Application
先來建立一個empty的.net core專案
專案建立好之後,再開啟Program.cs這個檔案,觀察一下,他是什麼?這邊一開始採用的版本是net core 2.1
using Microsoft.AspNetCore;
using Microsoft.AspNetCore.Hosting;
namespace WebVersion2.1
{
public class Program
{
public static void Main(string[] args)
{
CreateWebHostBuilder(args).Build().Run();
}
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>();
}
}
之後來看一下有用到的方法
小結:基於以上我們瞭解到Program.cs
PS.若有興趣的話,可以new一個新版3.1版的專案,會發現Program.cs略有不同
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Hosting;
namespace WebVersion3.1
{
public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
}
}
觀察以上,可發現:
接著看Startup.cs這個檔案,注意,此由Program.cs中的UseStartup去初始化這個Startup類別,是也可以把此類別在WebHost Builder中去設定。
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
namespace WebVersion3.1
{
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseStaticPage();
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Test}/{action=Index}/{id?}");
});
}
}
}
Startup類別的主要目的
而Startup類別又有以下兩方法
總結:
生命週期真的是每次去瞭解都快睡著,但第一步是一定要去弄懂的,因為這個跟以前mvc5是完全不一樣的執行方式,故值得去研究清楚。
參考資料
https://wakeupandcode.com/generic-host-builder-in-asp-net-core-3-1/
https://docs.microsoft.com/zh-tw/aspnet/core/fundamentals/host/generic-host?view=aspnetcore-3.1
https://github.com/aspnet/MetaPackages/blob/633cb681493c0958a9d215624c173db29e20c23d/src/Microsoft.AspNetCore/WebHost.cs
https://docs.microsoft.com/en-us/aspnet/core/fundamentals/startup?view=aspnetcore-3.1#the-configure-method