一.Startup类

  ASP.NET Core 应用是一个控制台应用,它在其 Program.Main 方法中创建 Web 服务器。其中Main方法是应用的托管入口点,Main 方法调用 WebHost.CreateDefaultBuilder来创建 Web 主机,自动分配了 Kestrel Web 服务器。IWebHostBuilder 的 Build 方法生成 IWebHost对象调用Run 方法启动WebHost,此时托管应用并开始侦听 HTTP 请求。代码如下所示:

public class Program
{
public static void Main(string[] args)
{
CreateWebHostBuilder(args).Build().Run();
} public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>();
}

  1.1 应用启动 Startup类

    IWebHostBuilder类的UseStartup调用启动类,按照约定命名为 Startup,该类必须是公共类,用于定义请求处理管道配置应用所需的任何服务。当应用启动时会调用 ConfigureServices 和 Configure两个方法。ConfigureServices 用于注入服务, Configure用于响应HTTP请求。

public class Startup
{
// Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
...
} // Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app)
{
...
}
}

  

  1.2  ConfigureServices方法

    ConfigureServices 方法负责注入服务。该方法在WebHost的Configure方法之前被调用,将服务添加到服务容器使得它们可以通过依赖注入在应用程序中使用,在webHost启动之前会加载该方法中的服务。典型模式是调用Add{service}方法注入服务,然后调用所有 services.Configure{Service} 方法。注入服务后,使其在应用和 Configure 方法中使用服务。在参数IServiceCollection (服务容器)上有 Add[Service] 扩展方法,用于添加自带的framework框架服务(例如添加EF,identity,mvc服务)也可以在IServiceCollection上注入自定义服务。

  public void ConfigureServices(IServiceCollection services)
{
//注入 Razor Pages 和 MVC 需要的服务
services.AddMvc();
}

  1.3 Configure方法

    Configure方法用于指定应用响应 HTTP 请求的方式。可将中间件注册到IApplicationBuilder 实例来配置请求管道。下面示例注册的中间件包括: ExceptionHandler异常/错误处理、HttpsRedirection重定向、StaticFiles静态文件服务器、CookiePolicy策略实施、mvc等中间件。每一个use开头的扩展方法将一个中间件添加到IApplicationBuilder请求管道中。

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Error");
app.UseHsts();
} app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseCookiePolicy(); app.UseMvc();
}

 

  总结: (1) Program的main方法用于创建WebHost服务,调用启动类Startup。

      (2) Startup中的ConfigureServices方法用于将服务注入到 IServiceCollection 服务容器中。

      (3) Startup中的Configure方法用于应用响应 HTTP 请求,将中间件注册到 ApplicationBuilder中来配置请求管道。

参考文献:

    https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/startup?view=aspnetcore-2.1

asp.net core 系列 2 启动Startup类介绍的更多相关文章

  1. asp.net core系列 39 Web 应用Razor 介绍与详细示例

    一. Razor介绍 在使用ASP.NET Core Web开发时, ASP.NET Core MVC 提供了一个新特性Razor. 这样开发Web包括了MVC框架和Razor框架.对于Razor来说 ...

  2. asp.net core系列 40 Web 应用MVC 介绍与详细示例

    一. MVC介绍 MVC架构模式有助于实现关注点分离.视图和控制器均依赖于模型. 但是,模型既不依赖于视图,也不依赖于控制器. 这是分离的一个关键优势. 这种分离允许模型独立于可视化展示进行构建和测试 ...

  3. 【APS.NET Core】- 应用程序Startup类介绍

    转自:https://www.cnblogs.com/stulzq/p/7845026.html Startup类配置服务和应用程序的请求管道. Startup 类 ASP.NET Core应用程序需 ...

  4. asp.net core 系列 2 启动类 Startup.CS

    学无止境,精益求精 十年河东,十年河西,莫欺少年穷 学历代表你的过去,能力代表你的现在,学习代表你的将来 在探讨Startup启动类之前,我们先来了解下Asp.NET CORE 配置应用程序的执行顺序 ...

  5. 【目录】asp.net core系列篇

    随笔分类 - asp.net core系列篇 asp.net core系列 68 Filter管道过滤器 摘要: 一.概述 本篇详细了解一下asp.net core filters,filter叫&q ...

  6. ASP.NET Core系列(三):启动类Startup

    前面讲了ASP.NET Core 的项目结构,查看完整的ASP.NET Core系列文章:https://www.cnblogs.com/zhangweizhong/category/1477144. ...

  7. ASP.NET Core 应用程序Startup类介绍

    Startup类配置服务和应用程序的请求管道. Startup 类 ASP.NET Core应用程序需要一个启动类,按照惯例命名为Startup.在主程序的Web Host生成器(WebHostBui ...

  8. ASP.NET Core 应用程序Startup类介绍 (转载)

    Startup类配置服务和应用程序的请求管道. Startup 类 ASP.NET Core应用程序需要一个启动类,按照惯例命名为Startup.在主程序的Web Host生成器(WebHostBui ...

  9. Net core学习系列(五)——Net Core应用程序Startup类介绍

    一.Startup 类 ASP.NET Core应用程序需要一个启动类,按照惯例命名为Startup.在主程序的Web Host生成器(WebHostBuilderExtensions)的 UseSt ...

随机推荐

  1. vue v-if 和 v-show 的知识点

    1.v-if 的特点: 实现方式:根据后面数据的真假判断是否重新删除或创建元素. 性能消耗:有较高的切换性能消耗. 编译过程:v-if 切换有一个局部编译/卸载的过程,切换过程中合适地销毁和重建内部的 ...

  2. I - Infinite Improbability Drive

    I - Infinite Improbability Drivehttp://codeforces.com/gym/241750/problem/I不断构造,先填n-1个0,然后能放1就放1,最后这个 ...

  3. unzip解压失败

    [root@localhost soft]# unzip QY.zip Archive: QY.zip End-of-central-directory signature not found. Ei ...

  4. 《About Face 3:交互设计精髓》读书笔记(一)

    第一章 目标导向设计 当今数字产品的创造过程 市场营销人员对于产品设计过程的贡献,通常局限于需求列表这些需求同用户的实际需要与期望无关,主要在于追赶竞争对手,按照任务清单管理IT资源,以及基于市场调查 ...

  5. 启动nginx报错问题

    为了解决生产环境的bug,模拟生产环境,我使用了nginx,在安装启动的过程中,出现了很多问题. 1.nginx下载地址 http://nginx.org/en/download.html 这是ngi ...

  6. 动态DP之全局平衡二叉树

    目录 前置知识 全局平衡二叉树 大致介绍 建图过程 修改过程 询问过程 时间复杂度的证明 板题 前置知识 在学习如何使用全局平衡二叉树之前,你首先要知道如何使用树链剖分解决动态DP问题.这里仅做一个简 ...

  7. 阿里云服务器 yii2执行composer提示报错

    未解决 composer installLoading composer repositories with package informationUpdating dependencies (inc ...

  8. 记一次Dynamic Batching不生效的爬坑实例分析[Unity]

    最近在项目开发过程中,无意发现游戏场景的绘制占用了大量的Batches,几乎一个模型显示就占用了一个Batch,而Saved by batching数量几乎为0,即没有任何合批渲染优化.这显然跟预期相 ...

  9. 基于jQuery的控件:弹框

    ★页面展示 ★属性 属性 值 说明 默认值 div Object jQuery对象 $('body') width Number 控件的宽度 auto height Number 控件的高度 auto ...

  10. 设置mysql InnoDB存储引擎下取消自动提交事务

    mysql 存储引擎中最长用的有两种,MyISAM 存储引擎和InnoDB存储引擎. 1.MyISAM 存储引擎 不支持事务,不支持外键,优势是访问速度快: 2.InnoDB存储引擎 支持事务,一般项 ...