以控台的形式,运行.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. asp.net生成店铺推广二维码,二维码中间加logo(源码)

    二维条码比一维条码记载数据量更多,二维码条码是一种高密度.高信息含量的便携式数据文件,是实现证件及卡片等大容量.高可靠性信息自动存储.携带并可用机器自动识读的理想手段.而且可以记载更复杂的数据,比如图 ...

  2. kafka(一)-为什么选择kafka

    作为开发人员,我们在选择一个框架或者工具时,我们都需要考虑些什么,我们不是头脑发热,一拍脑袋就它了,我们首先要认清这个框架或工具的作用是什么,能给我们带来什么样的好处,同时也要考虑带来什么样的负面结果 ...

  3. RabbitMQ入门(三)订阅模式

      在之前的文章RabbitMQ入门(二)工作队列中,我们创建了一个工作队列.工作队列背后的假设是每一项任务都被准确地传送至一个worker.在本文中,我们将会做一些不同的事情--我们将会把一个消息发 ...

  4. python应用airtest库的环境搭建

    参考https://blog.csdn.net/ywyxb/article/details/64126927 注意:无论是在线还是离线安装,最好在管理员权限下执行命令 1.安装Python36(32位 ...

  5. Centos7 下搭建STF平台

    STF,全名Smartphone Test Farm---智能手机测试平台,可以提供远程真机调试的功能,目前仅支持Android设备. 环境准备 1.Node.js 8 安装Node.js $ cur ...

  6. demon病毒样本分析

    1. 简介 该样本是前几周爆发的THINKPHP漏洞中,被批量上传的一个病毒样本.如图所示. 2. 分析 该样本未经混淆,加壳,所以直接拖到IDA中即可分析. 首先从main函数开始.做一些初始化的函 ...

  7. 安卓开发实战-记账本APP(六)

    记账本APP开发---终结篇 昨天的动态数字录屏奉上:在抖音上拍了一个(ps:欢迎点赞) https://v.douyin.com/poEjmG/ 今天将图表的内容进行了制作,我用的是MPChart的 ...

  8. 学过 C++ 的你,不得不知的这 10 条细节!

    每日一句英语学习,每天进步一点点: “Action may not always bring happiness; but there is no happiness without action.” ...

  9. 练习2-13 求N分之一序列前N项和 (15 分)

    练习2-13 求N分之一序列前N项和 (15 分) 输入在一行中给出一个正整数N. 输出格式: 在一行中按照“sum = S”的格式输出部分和的值S,精确到小数点后6位.题目保证计算结果不超过双精度范 ...

  10. 基于HTTPS的接口测试——nginx配置SSL

    目录 基于HTTPS的接口测试--nginx配置SSL 1. 背景 2. 所需环境与域名备案解析 2.1 云服务器 2.2 域名 2.3 SSL证书 2.4 网站备案 2.5 域名解析 3.nginx ...