asp.net core 系列 2 启动Startup类介绍
一.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类介绍的更多相关文章
- asp.net core系列 39 Web 应用Razor 介绍与详细示例
一. Razor介绍 在使用ASP.NET Core Web开发时, ASP.NET Core MVC 提供了一个新特性Razor. 这样开发Web包括了MVC框架和Razor框架.对于Razor来说 ...
- asp.net core系列 40 Web 应用MVC 介绍与详细示例
一. MVC介绍 MVC架构模式有助于实现关注点分离.视图和控制器均依赖于模型. 但是,模型既不依赖于视图,也不依赖于控制器. 这是分离的一个关键优势. 这种分离允许模型独立于可视化展示进行构建和测试 ...
- 【APS.NET Core】- 应用程序Startup类介绍
转自:https://www.cnblogs.com/stulzq/p/7845026.html Startup类配置服务和应用程序的请求管道. Startup 类 ASP.NET Core应用程序需 ...
- asp.net core 系列 2 启动类 Startup.CS
学无止境,精益求精 十年河东,十年河西,莫欺少年穷 学历代表你的过去,能力代表你的现在,学习代表你的将来 在探讨Startup启动类之前,我们先来了解下Asp.NET CORE 配置应用程序的执行顺序 ...
- 【目录】asp.net core系列篇
随笔分类 - asp.net core系列篇 asp.net core系列 68 Filter管道过滤器 摘要: 一.概述 本篇详细了解一下asp.net core filters,filter叫&q ...
- ASP.NET Core系列(三):启动类Startup
前面讲了ASP.NET Core 的项目结构,查看完整的ASP.NET Core系列文章:https://www.cnblogs.com/zhangweizhong/category/1477144. ...
- ASP.NET Core 应用程序Startup类介绍
Startup类配置服务和应用程序的请求管道. Startup 类 ASP.NET Core应用程序需要一个启动类,按照惯例命名为Startup.在主程序的Web Host生成器(WebHostBui ...
- ASP.NET Core 应用程序Startup类介绍 (转载)
Startup类配置服务和应用程序的请求管道. Startup 类 ASP.NET Core应用程序需要一个启动类,按照惯例命名为Startup.在主程序的Web Host生成器(WebHostBui ...
- Net core学习系列(五)——Net Core应用程序Startup类介绍
一.Startup 类 ASP.NET Core应用程序需要一个启动类,按照惯例命名为Startup.在主程序的Web Host生成器(WebHostBuilderExtensions)的 UseSt ...
随机推荐
- 将Map中的参数封装为XML
public String packageYDImageUploadXML(String versionCode, Map parmsMap) throws ParseException { Docu ...
- [CF1140C]Playlist
Description: 给你n首歌,每首歌有一个长度\(a_i\)和美丽度\(b_i\) 现在可以选出最多k首,动听值为\(\sum a_i*min_{\sum b_i}\) Hint: \(n \ ...
- 用JDBC把Excel中的数据导入到Mysql数据库中
步骤:0.在Mysql数据库中先建好table 1.从Excel表格读数据 2.用JDBC连接Mysql数据库 3.把读出的数据导入到Mysql数据库的相应表中 其中,步骤0的table我是先在Mys ...
- DIV滚动条滚动到指定位置(jquery的position()与offset()方法区别小记)
相对浏览器,将指定div滚到到指定位置,其用法如下 $("html,body").animate({scrollTop: $(obj).offset().top},speed); ...
- 用kattle将数据从SQLserver中导入到vertica中
今天简单的学习了一下ETL工具kattle了,只是简单的上手,不过这也已经够我去做POC了. 首先大体介绍一下kattle,Kettle是一款国外开源的ETL工具,纯java编写,可以在Window. ...
- node.js 递归复制文件夹(附带文件过滤功能)
1.简介: 很简单,写了一个node操作文件的小脚本,主要实现对目标文件夹中内容的复制.还顺带一个按照文件夹或者文件名过滤的功能. 2.应用场景 适合基于 node 环境的项目,项目打包的时候,配合 ...
- lodash 实现一些常见的功能
排序 const sorted = _.orderBy(filtered, [sortColumn.path], [sortColumn.order]); 数组切片 普通的 slice 可传递两个参数 ...
- Linux入门总结——虚拟机安装配置以及vim简单操作
安装配置ubuntu 安装准备 vittualbox-5.2.22版本(win10) ubuntu-12.04 安装VirtualBox 1.双击VirtualBox-5.2.2-119230-Win ...
- 1.9 From Native to HTML5
The mobile technology has become more and more mature, and it has evolved from a ridiculous situatio ...
- Html5视频播放器-VideoJS+Audio标签实现视频,音频及字幕同步播放
一,VideoJS介绍 引用脚本,videojs很为你着想,直接cdn了,你都不需要下载这些代码放入自己的网站 <link href=”http://vjs.zencdn.net/c/video ...