您现在的位置是:网站首页> 编程资料编程资料

ASP.NET Core中Startup类、Configure()方法及中间件详解_基础应用_

2023-05-24 319人已围观

简介 ASP.NET Core中Startup类、Configure()方法及中间件详解_基础应用_

ASP.NET Core 程序启动过程如下

1, Startup 类

ASP.NET Core 应用使用Startup类,按照约定命名为StartupStartup类:

  • 可选择性地包括ConfigureServices方法以配置应用的服务。
  • 必须包括Configure方法以创建应用的请求处理管道。

当应用启动时,运行时调用ConfigureServicesConfigure 。

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.jb51.net/article/234554.htm

https://www.jb51.net/article/234557.htm

常见中间件顺序

  • 异常/错误处理
  • 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.jb51.net/article/234554.htm

https://www.jb51.net/article/234557.htm

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 : 定义用于检索服务对象的机制,即为其他对象提供自定义支持的对象

可以参考 https://www.jb51.net/article/234560.htm

Properties

获取可用于在中间件之间共享数据的 键/值 集合

Properties 是类型为 IDictionary

ServerFeatures

获取应用程序服务器提供的HTTP特性集

点击 IFeatureCollection 详细了解

Methods(方法)

Build()

建立此应用程序使用的委托来处理HTTP请求

Build 是一个 AspNetCore.Http.RequestDelegate 类型的委托

New()

创建一个 IApplicationBuilder 共享 Properties 的 IApplicationBuilder

Use(Func)

将中间件委托添加到应用程序的请求管道中,对与自定义的中间件,使用此方法。

6,Extension Methods(拓展方法)--微软提供的中间件

使用方法 app._______

以下将列出 所有中间件及其重载方法、说明

注意IApplicationBuilder 范围很广,包括应用启动、依赖关系注入、路由、环境、配置、选项、日志记录、处理错误等。

UseRequestLocalization(IApplicationBuilder)

添加 RequestLocalizationMiddleware 以基于客户端提供的信息自动设置请求的区域性信息

UseRequestLocalization(IApplicationBuilder, RequestLocalizationOptions)

添加 RequestLocalizationMiddleware 以基于客户端提供的信息自动设置请求的区域性信息

UseRequestLocalization(IApplicationBuilder, Action)

添加 RequestLocalizationMiddleware 以基于客户端提供的信息自动设置请求的区域性信息

UseRequestLocalization(IApplicationBuilder, String[])

添加 RequestLocalizationMiddleware 以基于客户端提供的信息自动设置请求的区域性信息

UseAuthentication(IApplicationBuilder)

将 AuthenticationMiddleware 添加到指定的 IApplicationBuilder ,它支持身份验证功能

提示: 本文由整理自网络,如有侵权请联系本站删除!
本站声明:
1、本站所有资源均来源于互联网,不保证100%完整、不提供任何技术支持;
2、本站所发布的文章以及附件仅限用于学习和研究目的;不得将用于商业或者非法用途;否则由此产生的法律后果,本站概不负责!