这篇文章简单记录 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. 面向JavaScript开发人员的Adobe AIR与Dreamweaver
  2. 数据结构与算法 | 线性表 —— 链表
  3. 理解与使用Javascript中的回调函数
  4. React总结篇之六_React高阶组件
  5. python16进制转10进制_python 字节串及10进制,16进制相关转换
  6. 《剑指Offer》 调整数组顺序使奇数位于偶数前面
  7. pythonic code_Pythonic Code (Part III)
  8. 布谷鸟算法(C++实现)
  9. 链接的图片转base64,字符串转流pdf预览-zip下载
  10. 315晚会实在涨知识
  11. 【创业邦·年度创业人物】刘强东:十年战争与千亿美金帝国梦
  12. 【Vuejs】953- Vue 项目性能优化技巧分享
  13. 推荐几款很实用画图工具
  14. 【FXCG】展望2022人民币兑美元汇率走向何方
  15. 利用背景图片生成词云
  16. cocos2d-x视频教材(无脑码农系列)
  17. 几何画板使用技巧——自动乘法器的设计
  18. 抖音广告怎么吸引用户?这三大方面不容忽视
  19. nonlinear systems 学习笔记
  20. Oracle P6软件计划编制时的组织机构

热门文章

  1. vnc数量限制_通过限制视觉效果在Vista上加速VNC
  2. CC框架实践(1):实现登录成功再进入目标界面功能
  3. 你被大数据“杀熟”过吗?怎么解决的?丨Q言Q语
  4. ajax返回数据类型为JSON数据的处理
  5. You third iOS app,这个APP要放到手机上面运行,才会成功,才会新建记录。
  6. Android延时执行调用的几种方法
  7. Spring学习笔记十二---泛型依赖注入
  8. 宏在使用过程余函数的区别1
  9. K8S原来如此简单(一)K8S核心组件与基本原理
  10. ABP vNext微服务架构详细教程——基础服务层