在曾經的 asp.net 5 過渡時期,運作 asp.net 5 站點的指令是dnx web;在如今即将到來的 asp.
net core 時代,運作 asp.net core 站點的指令是dotnet run
在曾經的 asp.net 5 過渡時期,運作 asp.net 5 站點的指令是dnx web;在如今即将到來的 asp.net core 時代,運作 asp.net core 站點的指令是dotnet run(啟動控制台程式也是同樣的指令)。
在使用dnx web時,需要在project.json中配置對應的web command:
"commands": {
"web": "Microsoft.AspNet.Server.Kestrel --server.urls http://localhost:5004"
}
而使用dotnet run啟動asp.net core站點,不需要在project.json中進行額外的配置,但需要增加program.cs檔案,并且添加相應的代碼,比如以下的代碼(來自cli-samples):
public class Program
{
public static void Main(string[] args)
{
var host = new WebHostBuilder()
.UseServer("Microsoft.AspNetCore.Server.Kestrel")
.UseApplicationBasePath(Directory.GetCurrentDirectory())
.UseDefaultConfiguration(args)
.UseIISPlatformHandlerUrl()
.UseStartup<Startup>()
.Build();
host.Run();
}
}
上面的代碼讓dotnet run啟動 asp.net core 站點的秘密一覽無餘。
Web應用程式程式與控制台應用程式使用同樣的入口,實作了啟動方式的統一,變得更簡單。
Web站點的啟動工作是由WebHostBuilder(源碼)起頭的,但它隻是準備一些啟動參數,最終把啟動工作交給了真正的主角—WebHost(源碼)。
dotnet run隻負責加載.NET Core運作環境與調用應用程式的入口,web站點的啟動完全由Microsoft.AspNetCore.Hosting負責。dotnet run啟動asp.net core站點就是這麼簡單清晰。