[ASP.NET Core开发实战]基础篇04 主机
主机定义
主机是封闭应用资源的对象。
设置主机
主机通常由 Program 类中的代码配置、生成和运行。
HTTP项目(ASP.NET Core项目)创建泛型主机:
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>();
});
}
非 HTTP 项目创建泛型主机:
public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureServices((hostContext, services) =>
{
services.AddHostedService<Worker>();
});
}
HTTP项目与非HTTP项目的区别:
- Main 方法相同
- HTTP项目的CreateHostBuilder 调用 ConfigureWebHostDefaults
- 非HTTP项目的CreateHostBuilder 调用 CreateDefaultBuilder
适用于所有应用类型的设置
| 属性名 | 键 | 类型 | 默认 | 环境变量 | 备注 |
|---|---|---|---|---|---|
| ApplicationName | applicationName | string | 包含应用入口点的程序集的名称。 | <PREFIX_>APPLICATIONNAME | 要设置此值,请使用环境变量。 |
| ContentRoot | contentRoot | string | 应用程序集所在的文件夹。 | <PREFIX_>CONTENTROOT | 若要设置此值,请使用环境变量或对 IHostBuilder 调用 UseContentRoot |
| EnvironmentName | environment | string | Production | <PREFIX_>ENVIRONMENT | 若要设置此值,请使用环境变量或对 IHostBuilder 调用 UseEnvironment |
| ShutdownTimeout | shutdownTimeoutSeconds | int | 5 秒 | <PREFIX_>SHUTDOWNTIMEOUTSECONDS | 若要设置此值,请使用环境变量或配置 HostOptions。 |
适用于 Web 应用的设置
一些主机设置仅适用于 HTTP 项目。 默认情况下,用来配置这些设置的环境变量可以具有 DOTNET_ 或 ASPNETCORE_ 前缀。
| 属性名 | 键 | 类型 | 默认 | 环境变量 | 备注 |
|---|---|---|---|---|---|
| CaptureStartupErrors | captureStartupErrors | bool(true 或 1) | 默认为 false,除非应用使用 Kestrel 在 IIS 后方运行,其中默认值是 true。 | <PREFIX_>CAPTURESTARTUPERRORS | 若要设置此值,使用配置或调用 CaptureStartupErrors |
| DetailedErrors | detailedErrors | bool(true 或 1) | false | <PREFIX_>_DETAILEDERRORS | 要设置此值,使用配置或调用 UseSetting |
| HostingStartupAssemblies | hostingStartupAssemblies | string | 空字符串 | <PREFIX_>_HOSTINGSTARTUPASSEMBLIES | 要设置此值,使用配置或调用 UseSetting |
| HostingStartupExcludeAssemblies | hostingStartupExcludeAssemblies | string | 空字符串 | <PREFIX_>_HOSTINGSTARTUPEXCLUDEASSEMBLIES | 要设置此值,使用配置或调用 UseSetting |
| HTTPS_Port | https_port | string | 未设置默认值。 | <PREFIX_>HTTPS_PORT | 要设置此值,使用配置或调用 UseSetting |
| PreferHostingUrls | preferHostingUrls | bool(true 或 1) | true | <PREFIX_>_PREFERHOSTINGURLS | 若要设置此值,请使用环境变量或调用 PreferHostingUrls |
| PreventHostingStartup | preventHostingStartup | bool(true 或 1) | false | <PREFIX_>_PREVENTHOSTINGSTARTUP | 若要设置此值,请使用环境变量或调用 UseSetting |
| StartupAssembly | startupAssembly | string | 应用的程序集 | <PREFIX_>STARTUPASSEMBLY | 若要设置此值,请使用环境变量或调用 UseStartup |
| URL | urls | string | http://localhost:5000 和 https://localhost:5001 | <PREFIX_>URLS | 若要设置此值,请使用环境变量或调用 UseUrls |
| WebRoot | webroot | string | 默认值为 wwwroot。 {content root}/wwwroot 的路径必须存在。 | <PREFIX_>WEBROOT | 若要设置此值,请使用环境变量或对 IWebHostBuilder 调用 UseWebRoot |
[ASP.NET Core开发实战]基础篇04 主机的更多相关文章
- [ASP.NET Core开发实战]基础篇03 中间件
什么是中间件 中间件是一种装配到应用管道,以处理请求和响应的组件.每个中间件: 选择是否将请求传递到管道中的下一个中间件. 可在管道中的下一个中间件前后执行. ASP.NET Core请求管道包含一系 ...
- [ASP.NET Core开发实战]基础篇02 依赖注入
ASP.NET Core的底层机制之一是依赖注入(DI)设计模式,因此要好好掌握依赖注入的用法. 什么是依赖注入 我们看一下下面的例子: public class MyDependency { pub ...
- [ASP.NET Core开发实战]基础篇01 Startup
Startup,顾名思义,就是启动类,用于配置ASP.NET Core应用的服务和请求管道. Startup有两个主要作用: 通过ConfigureServices方法配置应用的服务.服务是一个提供应 ...
- [ASP.NET Core开发实战]基础篇06 配置
配置,是应用程序很重要的组成部分,常常用于提供信息,像第三方应用登录钥匙.上传格式与大小限制等等. ASP.NET Core提供一系列配置提供程序读取配置文件或配置项信息. ASP.NET Core项 ...
- [ASP.NET Core开发实战]基础篇05 服务器
什么是服务器 服务器指ASP.NET Core应用运行在操作系统上的载体,也叫Web服务器. Web服务器实现侦听HTTP请求,并以构建HttpContext的对象发送给ASP.NET Core应用. ...
- 2月送书福利:ASP.NET Core开发实战
大家都知道我有一个公众号“恰童鞋骚年”,在公众号2020年第一天发布的推文<2020年,请让我重新介绍我自己>中,我曾说到我会在2020年中每个月为所有关注“恰童鞋骚年”公众号的童鞋们送一 ...
- [ASP.NET Core开发实战]开篇词
前言 本系列课程文章主要是学习官方文档,再输出自己学习心得,希望对你有所帮助. 课程大纲 本系列课程主要分为三个部分:基础篇.实战篇和部署篇. 希望通过本系列课程,能让大家初步掌握使用ASP.NET ...
- ASP.NET Core 2.2 基础知识(八) 主机 (未完待续)
主机负责应用程序启动和生存期管理.共有两个主机 API : 1.Web 主机 : 适用于托管 Web 应用,基于 IWebHostBuilder ; 2.通用主机 : 适用于托管非 Web 应用. 基 ...
- 《ASP.NET Core项目开发实战入门》带你走进ASP.NET Core开发
<ASP.NET Core项目开发实战入门>从基础到实际项目开发部署带你走进ASP.NET Core开发. ASP.NET Core项目开发实战入门是基于ASP.NET Core 3.1 ...
随机推荐
- x86架构: 硬件启动过程分析(附引导启动代码)
用户按下开机键,几秒的时间,都经历了啥? 1.cpu各个寄存器赋初始值,cs.base=0xffff0000, eip=0xfff0,其他寄存器都是0,这时cs:ip得到的物理地址:0xfffffff ...
- [转]Java 逃逸分析
作者:栈长 公众号:Java技术栈 记得几年前有一次栈长去面试,问到了这么一个问题:Java中的对象都是在堆中分配吗?说明为什么! 当时我被问得一脸蒙逼,瞬间被秒杀得体无完肤,当时我压根就不知道他在 ...
- 大型企业都在用的Python反爬虫手段,破了它!
SVG 映射反爬虫 很多人学习python,不知道从何学起.很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手.很多已经做案例的人,却不知道如何去学习更加高深的知识.那么针对这三类人 ...
- 微信商户H5支付申请不通过被驳回,拒绝原因提示:网站存在不实内容或不安全信息
一.H5支付简介及使用场景说明 H5支付是指商户在微信客户端外的移动端网页展示商品或服务,用户在前述页面确认使用微信支付时,商户发起本服务呼起微信客户端进行支付.主要用于触屏版的手机浏览器请求微信支付 ...
- 洛谷P3513 [POI2011]KON-Conspiracy
洛谷P3513 [POI2011]KON-Conspiracy 题目描述 Byteotia的领土被占领了,国王Byteasar正在打算组织秘密抵抗运动. 国王需要选一些人来进行这场运动,而这些人被分为 ...
- C#算法设计查找篇之01-顺序查找
顺序查找(Sequential Search) 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/697 访问. 顺序查找也 ...
- rocketMq安装及集群配置
网上关于rocketMq安装.集群配置的文章有很多,作为一个初学者,跟着网上的各种教程安装遇到了各种坑,可谓是一路坎坷.本文记录下rocketMq安装的完整过程.希望对你有一点帮助 安装rocketM ...
- Hexo博客中插入 Chart 动态图表
该文基本(全部)来自于chatjs中文文档 由于使用pjax,导致页面需要二次刷新才会显示表格,故引入了自动刷新的JS,但这样会导致回退标签失效 背景 今天在谷歌上逛博客时,突然发现shen-yu大佬 ...
- 阿里云体验实验室 教你如何《快速搭建LNMP环境》
## 体验平台简介 面向开发者和中小企业打造的一站式.全云端的开发平台,打开浏览器就可以开发.调试.上线,所测即所得,并结合无服务器的模式,重新定义云原生时代的研发工作方法论.旨在降低开发者上手成本和 ...
- SpringBoot---关于 WebMvcConfigurerAdapter 过时问题及解决方法
SpringBoot---关于 WebMvcConfigurerAdapter 过时问题及解决方法 环境: IDEA :2020.1 Maven:3.5.6 SpringBoot: 2.3.2 在Sp ...