ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 02. Web Host 的默认配置
视频地址:
https://www.bilibili.com/video/av38392956/?p=2
语雀
https://www.yuque.com/yuejiangliu/dotnet/ixtbmb
ASP.NET Core MVC 02. Web Host 的默认配置
再来看下:CreateWebHostBuilder这个方法

它使用了 WebHost的静态方法CreateDefaultBuilder,它会返回一个类型叫做IWebHostBuilder,IWebHostBuilder它是一个对象,暂时叫他WebHostBuilder它知道怎么来设置我们的WebServer,就是设置我们WebServr的环境,里面有一些参数。
CreateDefaultBuilder就是进行了默认的设置,我们可以通过这里写builder的代码改变一些默认的设置

首先来看下默认配置有哪些东西

如果安装了ReSharper可以把鼠标放在CreateDefaultBuilder上进行反编译

Resharper的配置‘


z这里就是使用了Kestrel这个web Server


UseIISIntegration():假如说我们的程序运行于iis服务器后面UseIISIntegration这个方法也就是iis集成 ,允许iis通过windows的平证验证然后来Kestrel这个web服务器,这点对于构建内网的web应用是非常有用的。内网的用户都防火墙里面。所以说他们有时候使用这个
UseIIS():也会启动dotnet core cli的运行时,并且把这个web引用放在IISworkder process里面,iisWorker这个进程,要么是万w3wp.exe.要么是iisexpress.exe这种形式就叫做inProcess模型,inProcess模型的性能非常好。与inProcess相对的就是OutOfProcess,使用OutOfProcess可以转发给或者叫做代理给Kestrel的web代理服务器
,这种性能没有inProcess的性能好
源码再向下拉,看到先使用了UseIIS这个方法,又使用了UseIISIntegration()这个方法

默认配置好做了一些log的设置

还是这个方法,看到这里配置了logging

然后又使用莱姆达表达式做了一些配置

它把代码输出到了这三个地方
logging.AddConsole();
logging.AddDebug();
logging.AddEventSourceLogger();
程序运行起来可以看到在OutPut输出了日志

在控制台运行dotnet run可以看到也依然输出了日志

默认的webHostBuilder英文就是DefaultWebHostBuilder它会创建一个对象,这个对象将实现IConfiguration 接口,我们可以在整个asp.net core应用里访问这个对象,可以通过IConfiguration 接口,通过实现了这个接口的对象里获取一些我们需要的配置信息

源码里面这就是默认的webHostBuilder,它是new出来的。

我们再进如这个webHostBuilder看一下。它里面有个属性IConfiguration

在他的构造函数里 赋值给了这个_config

再进去看这个接口

通过索引字符串就可以取到配置的值,就是key value的形式的
配置信息可以从哪里来

可以直接使用这个文件配置一些配置信息

看一下源码 为什么appsettings.json可以直接被识别出来

也可以根据环境变量的不同附加环境变量的配置文件

把页面输出的Hello World字符串移动到配置文件内配置

要把Hello World从配置文件里面读取出来

就需要使用到实现了IConfiguration 接口的服务

在这个方法里请求这实现了IConfiguration 接口的服务,也可以叫做实现了IConfiguration 接口的对象,为什么我可以直接在这里方法调用请求了IConfiguration 接口的对象呢?因为asp.net core使用依赖注入。而且在整个应用所有的地方都可以使用依赖注入

比如说这里就是依赖注入进来的

原理:当asp,.net core调用这个Configure方法的时候,asp.net core会分析这个方法的几个参数,Configure方法现在请求了这三个参数,如果能解析这三个参数,那么就会传进来实现了该接口的对象或者叫服务进来。
现在asp.net core知道这三个接口,他也知道实现了这三个接口的服务或者叫做对象


配置文件数据来自不同地方,测试优先级
在系统环境变量变量里面设置了值

默认取的是系统环境变量的值,系统给环境变量优先级别高

如果是开发环境


先读上面,再读下面


系统换将变量时候后加载的,同一个属性的信息会才用后加载的

最后是命令行的启动参数

15分39秒
https://www.bilibili.com/video/av38392956/?p=2
不同的数据源,后加载的将会覆盖前面的数据源的值
dotnet run Welcome="Hello Form Command line ....."

最后加载的是CommandLine所以最终会打印出来


ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 02. Web Host 的默认配置的更多相关文章
- ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 03. 服务注册和管道
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 03. 服务注册和管道 语雀: https://www.yuque.com/yuejiangliu/dotnet/ ...
- ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 25. 过滤器
在MVC的请求管道 并不是 asp.net core的请求管道.所以说Filter是专用于MVC的 贯穿特性,横穿关注点.比如授权.日志 这里的Authorize其实就是一个Filter,主要用来授 ...
- ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 12. Views 下
ASP.NET Core MVC 13. 安装前端库 Partial VIew 就是部分View,他没有自己的数据,数据来自图中白色的那块,它的数据需要传进去,第一个参数是View的名称,第二个参数就 ...
- ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 04. 中间件
注册startup类可以配置我们web应用的启动逻辑,使用的就是UseStartUp方法,asp.net core就会实例化这个类 并调用startup类里面的两个方法ConfigureService ...
- ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 13. 安装前端库
前端库使用npm进行安装,需要先建立webpack.json文件 因为我们没有使用npm安装任何库,所以npm的文件夹是空的 这里是用于开发时构建时引用的库写在这里 这里用到bootStrap 开发时 ...
- ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 27. CICD Azure DevOps
VSTS做持续集成 后来改名叫做Azure Deveps https://azure.microsoft.com/zh-cn/services/devops/ 这是中文的地址 创建一个项目 名称.描述 ...
- ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 01. 创建项目 +项目结构和配置简介
新建项目:Tutotial.Web 解决方案名称可以把web去掉 视频里面把git这个选项勾选了.我就不勾选了 dotnet CLI创建项目 首先必须安装好了.net Core的SDK dotnet ...
- ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 05.Controller 的路由
视频地址: https://www.bilibili.com/video/av38392956/?p=5 这里面就包含了MVC相关的库 可以通过打开右侧的Nuget库进行查看 这里修改下 ,只需要静态 ...
- ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 06. Controller 返回View
Controller父类会提供很多上下文的相关信息,还提供了很多封装的方法 返回的对象要求实现了IActionResult接口 继承父类,并引入命名空间 写this点就出现很多东西,这些就是上下文的信 ...
随机推荐
- LeanCloud SDK 中秒杀70%问题的调试方法
非常多同学在LeanCloud上遇到的不少问题,事实上能够自我解决的,如今介绍一下LeanCloud上的调试方法. LeanCloud 是通过 REST API来进行前后端分离的.这意味着当出现故障的 ...
- redux 及 相关插件 项目实战
目录结构 +-- app | +-- actions | +-- index.js | +-- components | +-- content.js | +-- footer.js | +-- se ...
- openERP邮件(发信、收信)
openERP里的邮件处理主要有个2个模块处理 mail -核心 fetchmail -接收邮件 Alias domain和alias name 配置domain alias. Set ...
- C++写动态站点之HelloWorld!
演示样例源码下载地址:Fetch_Platform.7z 更复杂的代码可參考本博客BBS的实现 简单的说.动态站点就是能够动态变更的站点.动态变化的内容通常来自后端数据库.例如以下省略万字(动态站点) ...
- 释放SQL Server占用的内存 .Net 读取xml UrlReWriter 在web.config中简单的配置
释放SQL Server占用的内存 由于Sql Server对于系统内存的管理策略是有多少占多少,除非系统内存不够用了(大约到剩余内存为4M左右),Sql Server才会释放一点点内存.所以很多 ...
- Linux 用户和文件权限管理
Linux —— 用户权限管理 权限: 为什么需要权限管理? 1.计算机资源有限,我们需要合理的分配计算机资源. 2.Linux是一个多用户系统,对于每一个用户来说,个人隐私的保护是十分重 ...
- Comparable 和 Comparator的理解
对Comparable 的解释 Comparable是一个排序接口 此接口给实现类提供了一个排序的方法,此接口有且只有一个方法 public int compareTo(T o); compareTo ...
- Mysql 数据库中间件
读写分离:简单的说是把对数据库读和写的操作分开对应不同的数据库服务器,这样能有效地减轻数据库压力,也能减轻io压力.主数据库提供写操作,从数据库提供读操作,其实在很多系统中,主要是读的操作.当主数据库 ...
- YTUOJ-推断字符串是否为回文
题目描写叙述 编敲代码,推断输入的一个字符串是否为回文.若是则输出"Yes",否则输出"No".所谓回文是指順读和倒读都是一样的字符串. 输入 输出 例子输入 ...
- C++的string连接(a = a + b 与 a += b)
大一学习C语言的时候,书上就写着a = a + b与 a += b等价,但是提倡用后者. 在CSDN上也看到一个关于a+=b和a=a+b的区别的帖子,大概内容如下:------------------ ...