WebHost
通过如下代码生成WebHost
public class Program {
public static void Main (string[] args) {
CreateWebHostBuilder (args).Build ().Run ();
}
public static IWebHostBuilder CreateWebHostBuilder (string[] args) =>
WebHost
// 生成默认Web生成器
.CreateDefaultBuilder (args)
// 指定 Startup 类
.UseStartup<Startup> ();
CreateDefaultBuilder 执行了以下任务:
1.将 Kestrel 配置为 Web 服务器并配置该服务器。 有关 Kestrel 默认选项,请参阅 ASP.NET Core 中的 Kestrel Web 服务器实现。
2.将内容根设置为由 Directory.GetCurrentDirectory 返回的路径。
3.配置主机环境(IHostingEnvironment)
4.配置配置(appsettings.{Environment}.json):
5.配置控制台和调试输出的日志记录。
配置主机环境
应用程序名称
IHostingEnvironment.ApplicationName
该值默认设置为包含应用入口点的程序集的名称。 要显式设置值使用如下代码
WebHost.CreateDefaultBuilder(args)
.UseSetting(WebHostDefaults.ApplicationKey, "CustomApplicationName")
捕获启动错误
此设置控制启动错误的捕获。
当 false (默认)时,启动期间出错导致主机退出。 当 true 时,主机在启动期间捕获异常并尝试启动服务器。
WebHost.CreateDefaultBuilder(args)
.CaptureStartupErrors(true)
内容根
ASP.NET Core 搜索内容文件的目录,如 MVC 视图目录的路径为 内容根+/View 等。
默认值为应用程序集所在的文件夹
WebHost.CreateDefaultBuilder(args)
.UseContentRoot("c:\\<content-root>")
环境
设置应用的环境
环境可以设置为任何值,默认Production
WebHost.CreateDefaultBuilder(args)
.UseEnvironment(EnvironmentName.Development)
承载启动程序集
设置应用的承载启动程序集。
WebHost.CreateDefaultBuilder(args)
.UseSetting(WebHostDefaults.HostingStartupAssembliesKey, "assembly1;assembly2")
HTTPS 端口
设置 HTTPS 重定向端口。 用于强制实施 HTTPS。
WebHost.CreateDefaultBuilder(args)
.UseSetting("https_port", "8080")
服务器 URL
指示 IP 地址或主机地址,其中包含服务器应针对请求侦听的端口和协议。
默认值http://localhost:5000,多个地址以分号分隔 (😉
WebHost.CreateDefaultBuilder(args)
.UseUrls("http://*:5000;http://localhost:5001;https://hostname:5002")
关闭超时
指定等待 Web 主机关闭的时长。
WebHost.CreateDefaultBuilder(args)
.UseShutdownTimeout(TimeSpan.FromSeconds(10))
启动程序集
确定要在其中搜索 Startup 类的程序集。
按名称(string)或类型(TStartup)的程序集可以引用
WebHost.CreateDefaultBuilder(args)
.UseStartup<TStartup>()
Web 根路径
设置应用的静态资产的相对路径。
默认值是“(Content Root)/wwwroot”
WebHost.CreateDefaultBuilder(args)
.UseWebRoot("public")
管理主机
运行
Run 方法启动 Web 应用并阻塞调用线程,直到关闭主机:
host.Run();
Start
通过调用 Start 方法以非阻塞方式运行主机:
using (host) {
host.Start ();
Console.ReadLine ();
}
IHostingEnvironment 接口
IHostingEnvironment 接口提供有关应用的 Web 承载环境的信息。
使用构造函数注入获取 IHostingEnvironment 以使用其属性和扩展方法: