视频地址:web
https://www.bilibili.com/video/av38392956/?p=2express
语雀json
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
而后又使用莱姆达表达式作了一些配置
它把代码输出到了这三个地方windows
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知道这三个接口,他也知道实现了这三个接口的服务或者叫作对象
app
在系统环境变量变量里面设置了值
默认取的是系统环境变量的值,系统给环境变量优先级别高
若是是开发环境
先读上面,再读下面
系统换将变量时候后加载的,同一个属性的信息会才用后加载的
最后是命令行的启动参数
15分39秒
https://www.bilibili.com/video/av38392956/?p=2
不一样的数据源,后加载的将会覆盖前面的数据源的值asp.net
dotnet run Welcome="Hello Form Command line ....."ide
最后加载的是CommandLine因此最终会打印出来函数