首页 > 编程语言 >ASP.NET Core教程-Pipeline(请求管道)

ASP.NET Core教程-Pipeline(请求管道)

时间:2022-11-20 09:55:28浏览次数:37  
标签:Core Pipeline ASP 请求 中间件 next 管道 NET

更新记录
转载请注明出处:
2022年11月20日 发布。
2022年11月16日 从笔记迁移到博客。

请求管道是什么

类似于水的管道,有流进流出。在ASP.NET CoreServer进行监听用户的请求,然后请求被处理为HttpContext上下文对象,最终被Application处理为Respose,这个过程通过请求管道来完成。请求管道由多个中间件组成。

image

用户如果要获取 Web页面或其他数据,可以发送一个HTTP请求到服务器,过程中会经过一个个中间件,获取结果之后,反向通过中间件直至返回给用户。这就是ASP.NET Core的一次请求的接收与处理过程。这一个个中间件组成了ASP.NET Core的请求处理管道,整条管道就像高速公路,使请求从公路的一侧行驶到达目的地,又从公路的另一侧返回出发地。在请求发起前,这条管道就已经构建完成,管道的构建发生在应用启动阶段。

请求管道中的中间件处理过程

using System.Threading.Tasks;
using Microsoft.AspNetCore.Http;

namespace Demo.WebAPI
{
    public class SampleMiddleware
    {
        //下一个中间件的引用
        private readonly RequestDelegate _next;
	    //注入下一个中间件
        public RequestCultureMiddleware(RequestDelegate next)
        {
            _next = next;
        }
        
	    //执行中间件
        public async Task InvokeAsync(HttpContext context)
        {
            //region 执行中间件代码1
            //......
            
            //调用下一个中间件
            await _next(context);
            
            //region 执行中间件代码2
            //......
        }
    }
}

其中,第一个region就是进入第一个中间件时的操作语句,中间的_next(context)则是出了当前中间件进入下一个中间件,最后一个#egion则是从进入的下一个中间件回到先前中间件时的操作。以高速公路为例,一个中间件相当于一个地区,去和回的行程一共会经过这个地区两次,所以每个中间件可以有两次处理请求的机会。

注册中间件到请求管道

请求经过各个中间件的创建中间件之后,需要将其添加到请求处理管道才能生效,此过程可由 Startup中的Configure 方法实现,这个方法可供我们按照一定顺序将一系列中间件构建成请求处理管道。

app.UseMiddleware<SomeMiddleWare>();

标签:Core,Pipeline,ASP,请求,中间件,next,管道,NET
From: https://www.cnblogs.com/cqpanda/p/16894834.html

相关文章

  • .netcore 3.1 部署至Docker
    1.在工程中添加Dockerfile2.在文件中写入配置信息1FROMmcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim2WORKDIR/app3EXPOSE90904COPY..5ENTRY......
  • ASP.NET Core 6部署到IIS
    1.打开IIS,新建一个网站2.给新创建的应用程序池,设置为无托管代码,下面那个选经典或集成好像都没问题 3.运行网站,不出意外的话,会报错,提示HTTP错误500.19,说明网站目录权......
  • 篇(14)-Asp.Net Core入门实战-权限管理之角色编辑和赋权(ViewModel-DTO初探)
    入门实战-权限管理之角色编辑和赋权(ViewModel-DTO初探)前面几章讲了菜单功能的管理之后,我们再创建一个角色管理的功能,创建过程不再详细介绍,只要按照菜单管理功能的步骤进......
  • 带参数的ASP.NET MVC编辑器模板/ UIHint
    ASP.NETMVCEditor-Templates/UIHintwithparameters过去,我通过应用以下数据注释来像这样一直使用Editor-Templates:1[UIHint("SomeTemplate")]ViewMode......
  • 篇(13)-Asp.Net Core入门实战-将功能代码增加异步功能Async和配置简单防范CSRF攻击
    入门实战-将功能代码增加异步功能Async和配置简单防范CSRF攻击关于Asp.NetCore的新特性Async,异步,还是需要掌握的,这个特性,按微软官方的说法是可以提高你服务器的负荷,可以......
  • 【ASP.NET Core】MVC控制器的各种自定义:修改参数的名称
    在上一篇中,老周演示了通过实现约定接口的方式自定义控制器的名称。至于说自定义操作方法的名称,就很简单了,因为有内置的特性类可以用。看看下面的例子。[Route("[con......
  • ASP.NET Core教程-Middleware(中间件)
    更新记录转载请注明出处:2022年11月17日发布。2022年11月16日从笔记迁移到博客。Middleware(中间件)中间件介绍中间件可以处理请求(Request)和响应(Response)。中间......
  • kubernetes_CoreDNS全解析
    一、前言kubernetesCoreDNS是kube-system命令空间里面的一个Pod,用于域名解析。kubernetes自带三个命名空间(用kubeadm安装的Kubernetes集群):defaultkube-public......
  • 适易工作流平台 C#工作流平台 ASP.NET工作流平台
     工作流实现思路:1.     参考微软WWF工作流2.     充分利用了原配置实现增删改查的框架3.     完全采用数据库记录,利用WEB实现工作流转和通知,利用WEB实现......
  • 定制ASP.NET Core的身份认证
    定制ASP.NETCore的身份认证 大家好,我是张飞洪,感谢您的阅读,我会不定期和你分享学习心得,希望我的文章能成为你成长路上的垫脚石,让我们一起精进。在本章,我们将学习如......