中间件应用程序错误 修复方案_asp.net core 系列 15 中间件

一.概述

  中间件(也叫中间件组件)是一种装配到应用管道以处理请求和响应的软件。 每个组件:(1)选择是否将请求传递到管道中的下一个组件;(2)可以在管道中的下一个组件之前和之后执行工作。

  请求委托用于生成请求管道。 请求委托会处理每个 HTTP 请求。使用以下方法配置请求委托:Run, Map, Use扩展方法。可以将单个请求委托作为匿名方法(称为内联中间件in-line middleware) 或者可以在可重用类中定义。这些可重用的类和内联匿名方法是中间件,也称为中间件组件。请求管道中的每个中间件组件负责调用管道中的下一个组件,或使管道短路。

  (1) Run

//将终端中间件委托添加到应用程序的请求管道中。
      public static class RunExtensions
      {
          public static void Run(this IApplicationBuilder app, RequestDelegate handler);
      }

   (2) Map

// 根据给定请求路径的匹配对请求管道进行分支。
      public static class MapExtensions
      {
          public static IApplicationBuilder Map(this IApplicationBuilder app, PathString pathMatch, Action<IApplicationBuilder> configuration);
      }

  (3) Use

// 提供配置应用程序请求的机制    
      public interface IApplicationBuilder
      {
          //....
          // 将中间件委托添加到应用程序的请求管道中。
          IApplicationBuilder Use(Func<RequestDelegate, RequestDelegate> middleware); 
      }

1.1 使用 IApplicationBuilder 创建中间件管道
在Startup. Configure方法中,使用IApplicationBuilder来创建中间件管理。每一个use开头的扩展方法将一个中间件添加到IApplicationBuilder请求管道中。使用Use扩展方法来配置请求委托。每个use的中间件类似如下声明:

public static IApplicationBuilder Use[Middleware] (this IApplicationBuilder app )
      public static IApplicationBuilder Use[Middleware] (this IApplicationBuilder app , Action<T>)

   http://ASP.NET Core 请求管道包含一系列请求委托,依次调用。 下图演示了这一概念。 沿黑色箭头执行。

b7cce91d30176ade9c53a76fdbe56127.png

在Startup. Configure代码中,一系列use请求委托中间件如下所示:

app.UseHttpsRedirection();
           app.UseStaticFiles();
           app.UseCookiePolicy();
           app.UseMvc();

  委托可以决定不将请求传递给下一个委托(中间件),这就是对请求管道进行短路。通常需要短路,因为这样可以避免不必要的工作。

  下面示例 是一个最简单的 http://ASP.NET core 应用程序,用run方法配置请求委托,设置单个委托处理处理所有请求。此案例不包括实际的请求管道。相反,调用单个匿名函数以响应每个 HTTP 请求。并用委托终止了管道。

public class Startup
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值