视频地址:

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 的默认配置的更多相关文章

  1. 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/ ...

  2. ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 25. 过滤器

    在MVC的请求管道 并不是  asp.net core的请求管道.所以说Filter是专用于MVC的 贯穿特性,横穿关注点.比如授权.日志 这里的Authorize其实就是一个Filter,主要用来授 ...

  3. ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 12. Views 下

    ASP.NET Core MVC 13. 安装前端库 Partial VIew 就是部分View,他没有自己的数据,数据来自图中白色的那块,它的数据需要传进去,第一个参数是View的名称,第二个参数就 ...

  4. ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 04. 中间件

    注册startup类可以配置我们web应用的启动逻辑,使用的就是UseStartUp方法,asp.net core就会实例化这个类 并调用startup类里面的两个方法ConfigureService ...

  5. ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 13. 安装前端库

    前端库使用npm进行安装,需要先建立webpack.json文件 因为我们没有使用npm安装任何库,所以npm的文件夹是空的 这里是用于开发时构建时引用的库写在这里 这里用到bootStrap 开发时 ...

  6. 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/ 这是中文的地址 创建一个项目 名称.描述 ...

  7. ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 01. 创建项目 +项目结构和配置简介

    新建项目:Tutotial.Web 解决方案名称可以把web去掉 视频里面把git这个选项勾选了.我就不勾选了 dotnet CLI创建项目 首先必须安装好了.net Core的SDK dotnet ...

  8. ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 05.Controller 的路由

    视频地址: https://www.bilibili.com/video/av38392956/?p=5 这里面就包含了MVC相关的库 可以通过打开右侧的Nuget库进行查看 这里修改下 ,只需要静态 ...

  9. ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 06. Controller 返回View

    Controller父类会提供很多上下文的相关信息,还提供了很多封装的方法 返回的对象要求实现了IActionResult接口 继承父类,并引入命名空间 写this点就出现很多东西,这些就是上下文的信 ...

随机推荐

  1. 【spring boot】注解@ApiParam @PathVariable @RequestParam三者区别

    1.@ApiParam,就是用于swagger提供开发者文档,文档中生成的注释内容. @ApiOperation( value = "编辑公告", notes = "编辑 ...

  2. BIM

    BIM进入中国已经有十来个年头,随着对BIM概念的深入了解.当前国内BIM应用逐渐由三维模型的可视化应用升级为基于BIM模型的信息进行项目精细化动态管理. 传统粗放的项目管理方法是工程项目难以进行精细 ...

  3. Linux服务器同步网络时间

    Linux服务器运行久时,系统时间就会存在一定的误差,一般情况下可以使用date命令进行时间设置,但在做数据库集群分片等操作时对多台机器的时间差是有要求的,此时就需要使用ntpdate进行时间同步. ...

  4. 杭电1863 畅通project

    畅通project Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

  5. 【Hibernate】(2)Hibernate配置与session、transaction

    1. Hibernate经常使用配置 使用hibernate.default_schema属性能够让全部生成的表都带一个指定的前缀. 2. session简单介绍 不建议直接使用jdbc的connec ...

  6. 手游产品经理初探(八)CasinoStar玩家离开原因分析

    通过Delta DNA分析报告.综合我们的游戏进行思考,我总结了几条玩家流失的经验: 1.在有限的前60秒我们没有花足够的精力去吸引玩家.就是说我们要花大量的经历在玩家进入游戏的60秒的体验上(我的澳 ...

  7. 入手Arduino Yun,配合Blynk搞一波事情

    前言 原创文章,转载引用务必注明链接. 最近在闲鱼上与别人用RPi2尸体+好的BBB换了个Arduino Yun,等了几天赶在节前收到了.出奇的轻巧,产地台湾,官方正品做工就是精细~采用5v Micr ...

  8. 分析Cocos2d-x横版ACT手游源码 1、公共

    直接上代码 不说什么 这一款源码 凝视及多 PublicDef.h 公共头文件 #define NF_PLATFORM 1 //当前版本号(默觉得普通版) //版本号列表 #define NF_PLA ...

  9. 嵌入式学习笔记(综合提高篇 第一章) -- 利用串口点亮/关闭LED灯

    1      前言 从踏入嵌入式行业到现在已经过去了4年多,参与开发过的产品不少,有交换机.光端机以及光纤收发器,停车场出入缴费系统,二维码扫码枪,智能指纹锁以及数字IC芯片开发等; 涉及产品中中既有 ...

  10. XMLHTTPRequest DEMO(发送测试)

    对于其中的HTTP状态,我们知道200-299表明访问成功:300-399表明需要客户端 反应来满足请求:400-499和500-599表明客户端和服务器出错:其中常用的如404表示资源没找到,403 ...