首页 > 其他分享 >NetCore消息管道 Middleware

NetCore消息管道 Middleware

时间:2024-07-16 23:41:27浏览次数:8  
标签:Console context NetCore Middleware 中间件 next 管道 WriteLine app

中间件定义

/// <summary>
/// 自定义中间件1
/// </summary>
public class MyMiddleware : IMiddleware
{
    public async Task InvokeAsync(HttpContext context, RequestDelegate next)
    {
        Console.WriteLine("MyMiddleware_1,开始处理");
        await next.Invoke(context);
        Console.WriteLine("MyMiddleware_1,结束");
    }
}

/// <summary>
/// 自定义中间件2
/// </summary>
public class MyMiddleware2 : IMiddleware
{
    public async Task InvokeAsync(HttpContext context, RequestDelegate next)
    {
        Console.WriteLine("MyMiddleware_2,开始处理");
        await next.Invoke(context);
        Console.WriteLine("MyMiddleware_2,结束");
    }
}

/// <summary>
/// 通过拓展方法调用
/// </summary>
public static class Middleware2AppBuilderExtensions
{
    public static IApplicationBuilder UseMiddleware2(this IApplicationBuilder app)
    {
        return app.UseMiddleware<MyMiddleware2>();
    }
}

中间件注册

//注入中间件
builder.Services.AddSingleton<MyMiddleware>();
builder.Services.AddSingleton<MyMiddleware2>();

消息管道中加入中间件处理

//UseMiddleware方式调用
app.UseMiddleware<MyMiddleware>();
//拓展方式调用
app.UseMiddleware2();

//Use方式加入处理逻辑到消息管道
app.Use(async (context, next) =>
{
    // await context.Response.WriteAsync("Begin Custom Middleward");
    Console.WriteLine("Begin Custom Middleward");
   await next.Invoke();
    // await context.Response.WriteAsync("End Custom Middleward");
    Console.WriteLine("End Custom Middleward");
});

//Run方式作为处理终结点,不再调用下一个middleward
app.Run(async (context) =>
{
    //await context.Response.WriteAsync("Middleward EndPoint");
    Console.WriteLine("Middleward EndPoint");
});

运行结果

 

标签:Console,context,NetCore,Middleware,中间件,next,管道,WriteLine,app
From: https://www.cnblogs.com/daiwk/p/18306347

相关文章

  • dotnet netcore web api 部署 IIS windows 部署 windows server
    .NetCore部署IIS一、服务器环境配置1.1安装ASP.NETCore模块/托管捆绑包ASP.NETCore不再是由IIS工作进程(w3wp.exe)托管,而是使用自托管Web服务器(Kestrel)运行,为了能部署在IIS,必须先安装AspNetCoreModuleV2。安装方式一:安装ASP.NETCore运行时(推荐)下载地址:htt......
  • .NETCORE 使用内置IIS 实现内网IP调试
    1.设置IIS 2. 点开某一条路径,编辑配置文件 3.添加对应IP地址的端口号 4.添加网络映射netshhttpaddurlaclurl=https://192.168.0.157:44394/user=everyonenetshhttpaddurlaclurl=http://192.168.0.157:40880/user=everyone如果添加错了,可以删除netshhtt......
  • C#面:dot net core管道里面的map拓展有什么作用?
    在.NETCore管道中,Map拓展方法用于将中间件添加到请求处理管道中。它的作用是根据请求的路径或其他条件来选择性地执行中间件。具体来说,Map方法接受一个路径参数和一个委托参数。当请求的路径与指定的路径匹配时,该委托中的中间件将被执行。这使得我们可以根据不同的路径来应用......
  • Java NIO管道
    JavaNIO管道用于在两个线程之间建立单向数据连接。它有一个槽通道和源通道。数据正在写入槽通道,然后可以从源通道读取该数据。在JavaNIO中,包java.nio.channel.pipe用于按顺序读取和写入数据。管道用于确保数据必须以写入管道的相同顺序读取。下面来看看管道工作原理的示意......
  • .NET/C#、Netcore、数据库、Redis 、RabbitMQ&kafka、Docker ⾯试题汇总系列目录
    .NET/C#⾯试题汇总系列.NET/C#⾯试题汇总系列:ASP.NET常见面试题001.NET/C#⾯试题汇总系列:ASP.NET常见面试题002.NET/C#⾯试题汇总系列:ASP.NET常见面试题003.NET/C#⾯试题汇总系列:基础语法.NET/C#⾯试题汇总系列:ASP.NETMVC.NET/C#⾯试题汇总系列:多线程.NET/C#⾯......
  • Redis基础教程(十八):Redis管道技术
    ......
  • C#面:简述什么是中间件(Middleware)?
    中间件是组装到应⽤程序管道中以处理请求和响应的软件。每个组件:选择是否将请求传递给管道中的下⼀个组件。可以在调⽤管道中的下⼀个组件之前和之后执⾏⼯作。请求委托(Requestdelegates)⽤于构建请求管道,处理每个HTTP请求。请求委托使⽤Run,Map和Use扩展⽅法进⾏配置。单......
  • 22、Django-中间件-Middleware
    1、中间件是Django请求/响应处理的钩子框架、他是一个轻量级的、低级的“插件”系统,用于全局改变Django的输入或输出2、中间件以类的形式体现3、每个中间件组件负责做一些特定的功能、例如:Django包含一个中间件组件AuthentucationMiddleware、它使用会话将用户与请求关联起来......
  • 无名管道间父进程与子进程间的通信(含管道基本概念与特点)
    管道1.管道概念2.本质内核缓冲区伪文件-不会占用磁盘空间3.特点两部分:读端,写端,对应两个文件描述符数据写端流入,读端流出操作管理的进程被摧毁后,管道自动被释放管道默认是阻塞的4.管道的原理内部实现方式:队列环形队列:先进先出缓冲区大小默认为4k大小会根据实际情况做......
  • 有名管道:实现无亲缘关系进程间的通信
    有名管道的基本概念:具体操作例程:vimkfifo.c  编辑下列代码:#include<stdio.h>#include<sys/types.h>#include<sys/stat.h>#include<fcntl.h>#include<unistd.h>intmain(){intret;intfd;intnread;charreadbuff[50]={0};ret=......