天天看點

dotnet run是如何啟動asp.net core站點的

在曾經的 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站點就是這麼簡單清晰。

繼續閱讀