zoukankan      html  css  js  c++  java
  • 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所以最终会打印出来

  • 相关阅读:
    调整数组顺序使奇数位于偶数前面
    数值的整数次方
    矩形覆盖
    变态跳台阶
    跳台阶
    ubuntu图形界面切换文字界面(文字界面切换图形界面)
    Django环境安装、虚拟机端口映射、pycharm远程配置
    sql注入(一)-----数字型
    mysql基本语法
    渗透测试之------信息收集
  • 原文地址:https://www.cnblogs.com/wangjunwei/p/10914464.html
Copyright © 2011-2022 走看看