在曾经的 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文件,并且添加相应的代码,比如以下的代码(来自):
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() .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站点就是这么简单清晰。