以控台的形式,运行.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. 修改 Apache 的默认端口

    修改 Apache 的默认端口修改 Apache 端口的方法是最妥协的方法了,后果是当你开启 Apache 服务器的时候,访问的本机地址将会附带端口号,比如 http://localhost:8888 ...

  2. MCLS Notes

    MainToolbar View Button Click Event handle àMainToolbar.xaml.cs OnConnect() functionàService.Messeng ...

  3. 投入OJ的怀抱~~~~~~~~~~

    OpenJudge C20182024 信箱(1) 账号 修改设定 退出小组 管理员 frank 林舒 Dzx someone 李文新 公告 11-05 程序设计与算法(大学先修课) 成员(61910 ...

  4. Halo-个人独立博客系统

    项目地址:https://github.com/halo-dev/halo 安装指导:https://halo.run/guide/   简介: Halo 是一款现代化的个人独立博客系统,给习惯写博客 ...

  5. 我的ubuntu源18和16

    16阿里云的 deb cdrom:[Ubuntu 16.04 LTS _Xenial Xerus_ - Release amd64 (20160420.1)]/ xenial main restric ...

  6. 张旭个人第4次作业—Alpha项目测试

    课程 软件工程实践 作业要求 个人第四次作业 团队名称 C#软工造梦厂 作业目标 运行其他组的项目找出问题及提出建议 一.测试人信息 姓名 张旭 学号 201731024123 团队名称 C#软工造梦 ...

  7. Dynamics email的subject标题出现 CRM:0000xxxx

    怎样移除email subject标题中出现的CRM:0000xxxx Settings->Administration->System Settings->Email->Un ...

  8. 工具之awk

    转自:http://www.cnblogs.com/ggjucheng/archive/2013/01/13/2858470.html awk是一个强大的文本分析工具,相对于grep的查找,sed的编 ...

  9. volatile梳理

    volatile 可见性也就是说一旦某个线程修改了该被volatile修饰的变量,它会保证修改的值会立即被更新到主存,当有其他线程需要读取时,可以立即获取修改之后的值. 在Java中为了加快程序的运行 ...

  10. linux --- 杀掉特定端口进程与启用SSH服务

    Linux下端口被占用解决 有时候关闭软件后,后台进程死掉,导致端口被占用.下面以JBoss端口8083被占用为例,列出详细解决过程. 解决方法: 1.查找被占用的端口 netstat -tln ne ...