这篇文章简单记录 ASP.NET Core中 ,startup类的一些使用。

一.前言

在 Startup类中,一般有两个方法:

  • ConfigureServices 方法: 用来配置应用的 service 。

  • Configure 方法:创建应用的请求处理管道

它们都在应用启动时,被ASP.NET Core runtime 调用:

当应用的 host 被built(建立)时,Startup类被指定到应用中。

而在 Program 中,当 host builder 上的 Build 被调用时,应用的 host 被 built 。

而Startup类是通过调用WebHostBuilderExtensions.UseStartup<TStartup>方法指定的。

在startup类中,一种依赖注入的常见用法:

  • IHostingEnvironment  : 根据enviironment (环境) 配置 services .

  • IConfiguration : 读取配置

  • ILoggerFactory : 在Startup.ConfigureServices中创建 logger .

注入IHostingEnvironment , 当定义不同环境的Startup (例如,StartupDevelopment 等),在运行时,选择合适的Startup。

二.ConfigureServices方法

它有三个特点:

  • 可选的

  • 在调用Configure方法之前调用 ConfigureServices

  • Configuration options 按约定设置

1. 比较典型的是调用 Add{Service} 和 services.Configure{Service} 。例如:Configure Identity services.

2. host 可能会 在Startup方法被调用之前,配置一些服务。例如:The host.

在startup被调用之前,CreateDefaultBuilder方法配置了一个host 。

3. Add{Service}是IServiceCollection的扩展方法,下面是一些使用:

添加 services 到 service container 使它们在应用和Configure方法中可用。services方法可以通过 dependency injection 或 ApplicationServices 解析。

三.The Configure method

Configure方法用来指定应用怎样 处理HTTP request。请求管道(request pipeline)通过添加中间组件到IApplicationBuilder实例中来配置。

ASP.NET Core 模板 配置的管道:

  • Developer Exception Page

  • Exception handler

  • HTTP Strict Transport Security (HSTS)

  • HTTPS redirection

  • Static files

  • General Data Protection Regulation (GDPR)

  • ASP.NET Core MVC and Razor Pages

使用Use扩展方法添加一个或多个中间组件到请求管道。例如,UseMvc扩展方法添加 Routing Middleware 到请求管道 并且配置MVC 作为一个默认的处理器。

四.Convenience methods

不使用Startup类配置services和request processing pipeline。在host builder 上调用ConfigureServices和Configure的简便方法。如果存在多个ConfigureServices的调用,会依次添加。如果存在多个Configure方法的调用,最后一个Configure的调用会被使用。

五.Extend Startup with startup filters (使用startup filter扩展 Startup)

使用 IStartupFilter ,在应用的Configure 中间件管道的开头或末尾配置中间件。

IStartupFilter 实现Configure方法,它会接收和返回一个Action<IApplicationBuilder>。而IApplicationBuilder定义了一个类来配置一个应用的请求管道。

这些filters会按照添加到services container的顺序被调用。

下面是一个例子:

RequestSetOptionsMiddleware

RequestSetOptionsMiddleware 中间件被配置在 RequestSetOptionsStartupFilter 类中:

IStartupFilter 在 ConfigureServices中被注册到 service container, 并且从Startup类的外部增强Startup:

当option的查询字符串存在时,中间件会在MVC中间件之前处理这个值

中间件的执行顺序是按照IStartupFilter的注册顺序

六. 补充

这里晚上补充下 ApplicationServices 解析services的使用

参考网址:

https://docs.microsoft.com/en-us/aspnet/core/fundamentals/startup?view=aspnetcore-2.2

 原文地址:https://www.cnblogs.com/Vincent-yuan/p/11105523.html


.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com

asp.net core 系列之Startup相关推荐

  1. 4.1ASP.NET Core请求过程「深入浅出ASP.NET Core系列」

    原文:4.1ASP.NET Core请求过程「深入浅出ASP.NET Core系列」 希望给你3-5分钟的碎片化学习,可能是坐地铁.等公交,积少成多,水滴石穿,谢谢关注. HTTP请求过程 这里展示整 ...

  2. asp.net core系列 38 WebAPI 返回类型与响应格式--必备

    一.返回类型 ASP.NET Core 提供以下 Web API Action方法返回类型选项,以及说明每种返回类型的最佳适用情况: (1) 固定类型 (2) IActionResult (3) Ac ...

  3. 5.1基于JWT的认证和授权「深入浅出ASP.NET Core系列」

    原文:5.1基于JWT的认证和授权「深入浅出ASP.NET Core系列」 希望给你3-5分钟的碎片化学习,可能是坐地铁.等公交,积少成多,水滴石穿,码字辛苦,如果你吃了蛋觉得味道不错,希望点个赞,谢 ...

  4. ASP.NET CORE系列【一】搭建ASP.NET CORE项目

    原文:ASP.NET CORE系列[一]搭建ASP.NET CORE项目 为什么要使用 ASP.NET Core? NET Core 刚发布的时候根据介绍就有点心里痒痒,微软的尿性都懂的,新东西bug ...

  5. asp.net core 系列 18 web服务器实现

    一. ASP.NET Core Module 在介绍ASP.NET Core Web实现之前,先来了解下ASP.NET Core Module.该模块是插入 IIS 管道的本机 IIS 模块(本机是指 ...

  6. asp向不同的用户发送信息_【asp.net core 系列】 1 带你了解一下asp.net core

    0. 前言 这是一个新的系列,名字是<http://ASP.NET Core 入门到实战>.这个系列主讲http://ASP.NET Core MVC,辅助一些前端的基础知识(能用来实现我 ...

  7. 5.3Role和Claims授权「深入浅出ASP.NET Core系列」

    5.3Role和Claims授权「深入浅出ASP.NET Core系列」 原文:5.3Role和Claims授权「深入浅出ASP.NET Core系列」 希望给你3-5分钟的碎片化学习,可能是坐地铁. ...

  8. .ne中的控制器循环出来的数据如何显示在视图上_【asp.net core 系列】3 视图以及视图与控制器...

    0.前言 在之前的几篇中,我们大概介绍了如何创建一个http://asp.net core mvc项目以及http请求如何被路由转交给对应的执行单元.这一篇我们将介绍一下控制器与视图直接的关系. 1. ...

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

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

最新文章

  1. 基于深度学习的医学图像半监督分割
  2. Machine Learning-Introduction
  3. f2812的c语言与标准c语言,关于F2812中用C语言来实现中断的说明
  4. 903计算机技术综合基础,北大903计算机技术综合基础考研真题、资料、参考书
  5. 飞鼠溪·狼(flying squirrel creek)-- BleedingWolves
  6. 如何使用IP访问阿里云服务器
  7. 专家,除了呼吁涨价你还会干点什么?
  8. 300万数据导入导出优化方案,从80s优化到8s(实测)
  9. 51单片机入门学习 第六天
  10. Opencv-python形态学滤波操作
  11. 扫雷游戏软件测试,软件测试-扫雷游戏
  12. 教你 IntelliJ IDEA 永久激活,建议收藏!(转)
  13. iOS每日总结博客版:iOS开发历程中了解和学习的文章
  14. usaco4.4.1 Shuttle Puzzle
  15. Kruskal 算法介绍
  16. 别让虚拟化成为“永恒之蓝”的下一个攻击目标
  17. Vulnhub-GlasgowSmile:v-1.1
  18. 微软警告:Java虚拟机发现2个重要安全漏洞(转)
  19. Vue教程,React教程
  20. 面向对象的三大特征 Part 3

热门文章

  1. c语言编写程序计算行列式值,新手作品:行列式计算C语言版
  2. 谷歌浏览器的翻译功能在哪_如何在Google表格中使用AND和OR功能
  3. usb 驱动修复_您可以修复物理损坏的USB驱动器吗?
  4. 干式真空泵原理_如何安装干式墙锚在墙壁上悬挂重物
  5. release8_如何在Windows 8 Release Preview中将Chrome用作Metro浏览器
  6. JavaScript 精粹 基础 进阶(5)数组
  7. html5 弹性布局
  8. Linq 实现 DataTable 行转列
  9. MongoDB基本操作(增删改查)
  10. 字节、编码、字符、字符集 专题