ASP.NET Core Startup类 Configure()方法 | ASP.NET Core 中间件详细说明
ASP.NET Core 程序启动过程如下

目录
- Startup 类
- Configure() 方法
- 中间件
- 使用中间件
- Configure 方法 的参数 IApplicationBuilder
- Extension Methods(拓展方法)--微软提供的中间件
1, Startup 类
ASP.NET Core 应用使用 Startup 类,按照约定命名为 Startup 。 Startup 类:
- 可选择性地包括 ConfigureServices 方法以配置应用的服务。
- 必须包括 Configure 方法以创建应用的请求处理管道。
当应用启动时,运行时调用 ConfigureServices 和 Configure 。
Startup 方法体如下
public class Startup
{
// 使用此方法向容器添加服务
public void ConfigureServices(IServiceCollection services)
{
...
} // 使用此方法配置HTTP请求管道
public void Configure(IApplicationBuilder app)
{
...
}
}
这篇文章只说 Configure
2,Configure() 方法
Configure 是一个在
- 命名空间 Microsoft.AspNetCore.Hosting 定义的
- 抽象类 ↓↓↓
public abstract void Configure (Microsoft.AspNetCore.Builder.IApplicationBuilder app);
IApplicationBuilder
IApplicationBuilder 定义用于配置应用请求管道的类,ASP.NET Core 请求管道包含一系列请求委托,依次调用。
不清楚 Asp.Net Core 请求管道、中间件的读者,对这一部分的内容可以参考
https://www.cnblogs.com/stulzq/p/7760648.html
https://www.cnblogs.com/JNLightGade/p/5737485.html
常见中间件顺序
- 异常/错误处理
- HTTP 严格传输安全协议
- HTTPS 重定向
- 静态文件服务器
- Cookie 策略实施
- 身份验证
- 会话
- MVC
你可以添加其它参数 对 Configure 方法 进行重写,如 IHostingEnvironment 、ILoggerFactory
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ... ... , ... ...)
{
... ...
}
3,中间件
Configure 方法 使用 IApplicationBuilder 来使用中间件
有 Use 、Map、Run 三种使用方式
- Use 使用中间件配置请求管道
- Map 管道分支
- Run 管道短路
对这一部分的内容可以参考
https://www.cnblogs.com/stulzq/p/7760648.html
https://www.cnblogs.com/JNLightGade/p/5737485.html
Asp.Net Core 内置很多中间件,用户可以直接使用,将在文章后面介绍
4,使用中间件
默认创建 Asp.Net Core Mvc 程序时,会生成如下模板(Asp.Net Core 2.1)
在文章后面或详细列出所有中间件并加以说明
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage(); //是否开发环境
}
else
{
app.UseExceptionHandler("/Home/Error"); //出现错误跳转到 /Error 页面
app.UseHsts(); //在文章后面的第39行可以看到解释
} app.UseHttpsRedirection(); //把 HTTP 重定向到 HTTPS
app.UseStaticFiles(); //使用静态文件
app.UseCookiePolicy(); //与 Cookie 有关 app.UseMvc(routes => //使用 MVP 页面
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
}
可以直接使用 app.Use_______ 形式,直接使用内置中间件
5,Configure 方法 的参数 IApplicationBuilder
Configure 方法配置请求管道使用了 IApplicationBuilder,下面将详细列出 IApplicationBuilder 默认的方法、参数、特性等。
Properties(性质)
| ApplicationServices |
获取或设置提供对应用程序服务容器的访问的 IServiceProvider 提供程序 IServiceProvider : 定义用于检索服务对象的机制,即为其他对象提供自定义支持的对象 |
| Properties |
获取可用于在中间件之间共享数据的 键/值 集合 Properties 是类型为 IDictionary<string,object> |
| ServerFeatures |
获取应用程序服务器提供的HTTP特性集 点击 IFeatureCollection 详细了解 |
Methods(方法)
| Build() |
建立此应用程序使用的委托来处理HTTP请求 Build 是一个 AspNetCore.Http.RequestDelegate 类型的委托 |
| New() |
创建一个 IApplicationBuilder 共享 Properties 的 IApplicationBuilder |
| Use(Func<RequestDelegate,RequestDelegate>) |
将中间件委托添加到应用程序的请求管道中,对与自定义的中间件,使用此方法。 |
6, Extension Methods(拓展方法)--微软提供的中间件
使用方法 app._______
以下将列出 所有中间件及其重载方法、说明
注意 IApplicationBuilder 范围很广,包括应用启动、依赖关系注入、路由、环境、配置、选项、日志记录、处理错误等。
ASP.NET Core Startup类 Configure()方法 | ASP.NET Core 中间件详细说明的更多相关文章
- ASP.NET -- WebForm -- HttpRequest类的方法和属性
ASP.NET -- WebForm -- HttpRequest类的方法和属性 1. HttpRequest类的方法(1) BinaryRead: 执行对当前输入流进行指定字节数的二进制读取. ( ...
- ASP.NET -- WebForm -- HttpResponse 类的方法和属性
ASP.NET -- WebForm -- HttpResponse 类的方法和属性 1. HttpResponse 类的方法 (1) AddCacheDependency: 将一组缓存依赖项与响应关 ...
- ASP.NET 之 常用类、方法的超级总结,并包含动态的EXCEL导入导出功能,奉上类库源码
实用类:UtilityClass 包含如下方法 判断对象是否为空或NULL,如果是空或NULL返回true,否则返回false 验证手机号是否正确 13,15,18 验证邮箱 验证网址 MD5加密,返 ...
- asp.net core 系列 2 启动Startup类介绍
一.Startup类 ASP.NET Core 应用是一个控制台应用,它在其 Program.Main 方法中创建 Web 服务器.其中Main方法是应用的托管入口点,Main 方法调用 WebHos ...
- 深入探究ASP.NET Core Startup初始化
前言 Startup类相信大家都比较熟悉,在我们使用ASP.NET Core开发过程中经常用到的类,我们通常使用它进行IOC服务注册,配置中间件信息等.虽然它不是必须的,但是将这些操作统一在Start ...
- ASP.NET Core 入门教程 9、ASP.NET Core 中间件(Middleware)入门
一.前言 1.本教程主要内容 ASP.NET Core 中间件介绍 通过自定义 ASP.NET Core 中间件实现请求验签 2.本教程环境信息 软件/环境 说明 操作系统 Windows 10 SD ...
- .NET CORE学习笔记系列(5)——ASP.NET CORE的运行原理解析
一.概述 在ASP.NET Core之前,ASP.NET Framework应用程序由IIS加载.Web应用程序的入口点由InetMgr.exe创建并调用托管,初始化过程中触发HttpApplicat ...
- .Net Core技术研究-WebApi迁移ASP.NET Core2.0
随着ASP.NET Core 2.0发布之后,原先运行在Windows IIS中的ASP.NET WebApi站点,就可以跨平台运行在Linux中.我们有必要先说一下ASP.NET Core. ASP ...
- ASP.NET Core 入门笔记10,ASP.NET Core 中间件(Middleware)入门
一.前言 1.本教程主要内容 ASP.NET Core 中间件介绍 通过自定义 ASP.NET Core 中间件实现请求验签 2.本教程环境信息 软件/环境 说明 操作系统 Windows 10 SD ...
随机推荐
- SpringMVC中配置AOP拦截controller 失效
来源:http://www.oschina.net/question/222929_124314 目测大部分同学的aop失效都是因为在springmvc的配置文件里面扫描了类,那么spring去扫描的 ...
- 1-2 Mobx 入门实践之TodoList(官方Demo)
第一步:导入模块 import React, { Component } from 'react'; import { observable, autorun,computed } from 'mob ...
- WPF中设置了WindowStyle="None"后,窗口仍然有边框的解决方法
1. 设置了窗体的WindowStyle="None",窗口还是右边框,如下图: 2. 这是因为窗体默认是可以改变大小的,所以需要修改ResizeMode的值 ResizeMode ...
- [转]Hadoop集群_WordCount运行详解--MapReduce编程模型
Hadoop集群_WordCount运行详解--MapReduce编程模型 下面这篇文章写得非常好,有利于初学mapreduce的入门 http://www.nosqldb.cn/1369099810 ...
- 利用OC对象的消息重定向forwardingTargetForSelector方法构建高扩展性的滤镜功能
在OC中,当像一个对象发送消息,而对象找到消息后,从它的类方法列表,父类方法列表,一直找到根类方法列表都没有找到与这个选择子对应的函数指针.那么这个对象就会触发消息转发机制. OC对象的继承链和isa ...
- java爬虫爬取https协议的网站时,SSL报错, java.lang.IllegalArgumentException TSLv1.2 报错
目前在广州一家小公司实习,这里的学习环境还是挺好的,今天公司从业十几年的大佬让我检查一下几年前的爬虫程序是否还能使用…… 我从myeclipse上check out了大佬的程序,放到workspace ...
- SSIS教程:创建简单的ETL包 -- 6. 对项目部署模型使用参数(Using Parameters with the Project Deployment Model)
在本课中,将修改在第 5 课: 添加包部署模型的包配置中创建的包,以便使用项目部署模型.您将使用一个参数替换该配置值,以便指定示例数据位置.还可以复制本教程附带的已完成的 Lesson 5 包. 使用 ...
- 【转】IIS网站浏览时提示需要用户名密码登录-解决方法
打开iis,站点右键----属性----目录安全性----编辑----允许匿名访问钩选 IIS连接127.0.0.1要输入用户名密码的解决办法原因很多,请尝试以下操作: 1.查看网站属性——文档看看启 ...
- mongdb启动报错
2018-08-19T12:25:31.707+0800 I CONTROL [main] Automatically disabling TLS 1.0, to force-enable TLS 1 ...
- Django(二):url和views
网络通讯的本质是socket,从socket封装到MVC模式,参见另外几篇博客.本节笔记整理自Django2.0官方文档. 一.url调度器 - django.urls.path django2.0中 ...
