以控台的形式,运行.net core mvc 代码,

Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();//指定网络主机要使用的启动类型。
});

返回默认的IHostBuilder ,程序初始化。

根据官方说明文档:该方法做了这么多事情:

将 ContentRootPath 设置为 GetCurrentDirectory() 的结果

从 "DOTNET_" 前缀的环境变量加载主机 IConfiguration

从提供的命令行参数加载主机 IConfiguration

从 "appsettings" 和 "appsettings" 加载应用 IConfiguration。[EnvironmentName] json "

使用条目程序集 EnvironmentName "开发" 时从用户机密加载应用 IConfiguration

从环境变量加载应用 IConfiguration

从提供的命令行参数加载应用 IConfiguration

将 ILoggerFactory 配置为记录到控制台、调试和事件源输出

当 EnvironmentName 为 "开发" 时,对依赖关系注入容器启用范围验证

此时json配置已经被加载。

1、ConfigureServices 方法 :运行时调用。使用此方法将服务添加到容器。用于配置依赖注入以在运行时根据依赖关系创建对象。

1)可选。

2)在 Configure 方法配置应用服务之前,由主机调用。

services.AddControllersWithViews();

默认运行时将Controller 注册。

将服务添加到服务容器,使其在应用和 Configure 方法中可用。服务通过依赖关系注入或 ApplicationServices 进行解析。

注:IServiceCollection为.net core 自带的一个容器。

IServiceCollection container = new ServiceCollection();
services.AddScoped<IMyDependency, MyDependency>();
services.AddTransient<IOperationTransient, Operation>();
services.AddScoped<IOperationScoped, Operation>();
services.AddSingleton<IOperationSingleton, Operation>();
services.AddSingleton<IOperationSingletonInstance>(new Operation(Guid.Empty));

AddTransient:每次从服务容器进行请求时创建的。 这种生存期适合轻量级、 无状态的服务。作用域生存期服务 (AddScoped) 以每个客户端请求(连接)一次的方式创建。

AddSingleton:单例,在第一次请求后,后续请求都使用相同实例。 如果应用需要单一实例行为,建议允许服务容器管理服务的生存期。不要实现单一实例设计模式并提供用户代码来管理对象在类中的生存期。

AddScoped:作用域生存期服务 ,以每个客户端请求(连接)一次的方式创建。

2、Configure 方法用于指定应用响应 HTTP 请求的方式。可通过将中间件组件添加到 IApplicationBuilder 实例来配置请求管道。Configure 方法可使用 IApplicationBuilder,但未在服务容器中注册。托管创建 IApplicationBuilder 并将其直接传递到 Configure。

Configure 用于配置中间件(middleware)以构建请求处理流水线。

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Error");
app.UseHsts();
} app.UseHttpsRedirection();
app.UseStaticFiles(); app.UseRouting(); app.UseAuthorization(); app.UseEndpoints(endpoints =>
{
endpoints.MapRazorPages();
});
}

IApplicationBuilder :将嵌入式定义的中间件委托添加到应用程序的请求管道。(IApplicationBuilder,Func <HttpContext,Func <Task>,Task>))

原创,转载请注明出处。

又是深夜,先写道这里,后续继续学习~

DOTNET Core MVC (一)的更多相关文章

  1. Docker 部署Dotnet Core MVC项目

    原文:Docker 部署Dotnet Core MVC项目 1.dotnet core创建项目 dotnet new mvc -o myweb cd myweb 然后就是业务代码的编辑,增删改查乱七八 ...

  2. DOTNET Core MVC(二)路由初探

    搁置了几天,工作忙的一塌糊涂,今天终于抽空来继续看看MVC的知识.先来看看MVC的路由是如何处理的.以下为替代的路由: app.UseEndpoints(endpoints => { endpo ...

  3. WSL2 新建dotnet core mvc项目

    我们知道dotnet sdk会有很多命令,但在我们完全不知道如何去使用哪个命令. 我们使用dotnet -h进行查看: 我们看到SDK的new命令,但是new命令又如何使用呢? 我们再次使用帮助: 可 ...

  4. Asp.net Core MVC(三)UseMvc设置路由

    在家办公,下班继续看点东西,不废话,继续看MVC的路由. asp.net核心mvc的路由是建立在asp.net核心的路由之上的.通过终结点加载路由中间件的配置方式在此不细说了,(DOTNET Core ...

  5. dotnet core开发体验之开始MVC

    开始 在上一篇文章:dotnet core多平台开发体验 ,体验了一把dotnet core 之后,现在想对之前做的例子进行改造,想看看加上mvc框架是一种什么样的体验,于是我就要开始诞生今天的这篇文 ...

  6. ASP.NET Core MVC 在linux上的创建及发布

    前言 ASP.NET core转眼都发布半月多了,社区最近也是非常活跃,虽然最近从事python工作,但也一直对.NET念念不忘,看过了园区大神们搭建的Asp.net core项目之后,自己也是跃跃欲 ...

  7. dotnet Core Asp.net 项目搭建

    Asp.Net Core 介绍 Asp.Net Core 目前最新版本 1.0.0-preview2-003131 Asp.Net Core官网:https://dotnet.github.io/ A ...

  8. DotNet Core 介绍

    前言 asp.net core rtm 6月底即将发布,自己也想着为社区做点共享,刚好最近不太忙,看到社区的小伙伴们都在为dotnet core的推广而贡献力量,项目中刚好在用rc2版本,就多写些文章 ...

  9. 创建ASP.NET Core MVC应用程序(5)-添加查询功能 & 新字段

    创建ASP.NET Core MVC应用程序(5)-添加查询功能 & 新字段 添加查询功能 本文将实现通过Name查询用户信息. 首先更新GetAll方法以启用查询: public async ...

随机推荐

  1. linux操作系统下调试python代码方法

    一.python有调试工具pdb,可以用来进行代码调试. pdb的常用命令说明: l #查看运行到哪行代码 n #单步运行,跳过函数 s #单步运行,可进入函数 p 变量 #查看变量值 b 行号 #断 ...

  2. CTRL_IKun团队项目总结

    1. 团队项目-总结 这个作业属于哪个课程 课程链接 这个作业要求在哪里 作业要求 团队名称 CTRP-lkun 这个作业的目标 团队项目总结,每个人的收获和感悟 Github地址 Github 2. ...

  3. js之new的原理

    在调用new的过程中会发生以上四件事情: 1.新生成了一个对象 2.链接到原型 3.绑定this 4.返回新对象 function create() { let obj = {} //创建一个新对象 ...

  4. Docker基础内容之数据持久化

    数据卷的特性 数据卷是一个可供一个或多个容器使用的特殊目录,它绕过 UFS 数据卷可以在容器之间共享和重用,相当于将一个分区挂载到多个目录下面 数据卷内容的修改会立马生效 数据卷的更新,不会影响镜像: ...

  5. ajax 后台java代码执行完毕 前端报404错误

    一个ajax请求,到java后台代码,后台成功接受并执行相应处理,但是返回的时候,success却没进去,前端报404错误. 因为是由于Controller忘记写spring的@Responsebod ...

  6. MyBatis 介绍

    MyBatis 介绍 MyBatis 是一款优秀的 ORM(Object Relational Mapping,对象关系映射)框架,它可以通过对象和数据库之间的映射,将程序中的对象自动存储到数据库中. ...

  7. Kubernetes-Service资源详解

    service的三种工作模式:(userstats(效率低).iptables.ipvs) service可以自动实现负载均衡.service自动实现了负载均衡,service通过selector标签 ...

  8. hive安装启动错误总结

    错误一: Exception in thread "main" java.lang.NoClassDefFoundError: jline/console/completer/Ar ...

  9. Druid入门(1)—— 快速入门实时分析利器-Druid_0.17

    一.安装准备 本次安装的版本是截止2020.1.30最新的版本0.17.0 软件要求 需要Java 8(8u92 +)以上的版本,否则会有问题 Linux,Mac OS X或其他类似Unix的操作系统 ...

  10. 三、Linux系统中的文件类型和文件扩展名

    .sock文件也是一类特殊的文件,这类文件通常用在网络之间进行数据连接,如:我们可以启动一个程序来监听客户端的要求,客户端可以通过套接字来进行通信: linux中的文件类型 文件类型介绍 Linux系 ...