以控台的形式,运行.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. .net Core 2.*使用autofac注入

    创建项目 1.创建一个.net core 项目 2.创建一个类库 2.1创建interface文件夹 2.2创建Service文件夹 好了给大家看项目目录 对的.我创建了一个IUserService和 ...

  2. 在ubuntu18.04下搭建kvm

    前一段时间一直在尝试Ubuntu上搭建xen,一直出现各种问题,各种坑 首先先感谢下面这个公司对我的耐心解答,非常感谢.特别是后面来的电话对我进行了详细的解答,所以选择搭建kvm. 1. 需要检查一下 ...

  3. python接口自动化测试 - configparser配置文件解析器详细使用

    configparser简介 ConfigParser模块已在Python 3中重命名为configparser 该模块定义了ConfigParser类. ConfigParser类实现一种基本的配置 ...

  4. 第二次作业hzw

    第二次作业 | GIT地址 | 地址链接 | |--|--| |GIT用户名 | BRYANT333 | |学号后五位|24240| |博客地址|我的博客| |作业链接|第二次作业地址| 一.环境配置 ...

  5. 使用postman测试接口

    1.什么是接口测试 其实接口测试就和普通功能测试没什么区别,区别就是功能测试是在页面上点点点,在页面上输入值,提交数据看结果,而接口测试没有页面,通过接口规范文档上的调用地址.请求参数,拼接报文,然后 ...

  6. ios---scrollview用法总结

    一.使用步骤: 1.添加子组件到scrollview //必要步骤 2.设置clipsToBounds来确定超出范围是否被剪裁 (默认yes) self.scrolltest.clipsToBound ...

  7. Selenium(一):元素定位

    一.Selenium 8种定位方式 baidu.html <form id="form" name="f" action="/s" c ...

  8. 在 Ubuntu 上安装 K8S教程

    在 Ubuntu 上安装 K8S教程 1,更新系统源 如果系统本身自带得镜像地址,服务器在国外,下载速度会很慢,可以打开 /etc/apt/sources.lis 替换为国内得镜像源. apt upg ...

  9. 简单总结关于阿里云CDN的知识

    CDN概念剖析 这里解释一下几个概念,摘自阿里云官方文档. 源站: 源站决定了回源时,请求到哪个IP 回源host:回源host决定回源请求访问到该IP上的哪个站点 例子1:源站是域名 源站为 www ...

  10. JSTL (标准标签库)

    JSTL(标准标签库) 作用: Web程序员能够利用JSTL和EL来开发Web程序,取代传统直接在页面上嵌入Java程序(Scripting)的做法,以提高程序的阅读性.维护性和方便性. 使用方法:J ...