菜的像徐坤
排名
7
文章
192
粉丝
15
评论
16
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术

中间件(2)

4514人阅读 2022/2/10 10:19 总访问:1020893 评论:0 收藏:0 手机
分类: .net core

前言

接着上一篇

开发中间件

基于约定的中间件开发

在 ASP.NET Core 官网上面提供了一个简单的例子,通过中间件来设置应用的区域信息,代码如下:

  1. public void Configure(IApplicationBuilder app){
  2.     app.Use((context, next) =>
  3.     {   
  4.         var cultureQuery = context.Request.Query["culture"]; 
  5.         if (!string.IsNullOrWhiteSpace(cultureQuery))
  6.         {            var culture = new CultureInfo(cultureQuery);
  7.             CultureInfo.CurrentCulture = culture;
  8.             CultureInfo.CurrentUICulture = culture;
  9.         }      
  10.        // Call the next delegate/middleware in the pipeline
  11.         return next();
  12.     });
  13.     app.Run(async (context) =>
  14.     {        await context.Response.WriteAsync(  
  15.                   $"Hello {CultureInfo.CurrentCulture.DisplayName}");
  16.     });
  17. }

通过这段代码,我们可以通过QueryString的方式设置应用的区域信息。但是这样的代码怎样复用呢?注意,中间件一定要是可复用、方便复用的。我们来改造这段代码:

  1. public class RequestCultureMiddleware{   
  2. private readonly RequestDelegate _next;  
  3. public RequestCultureMiddleware(RequestDelegate next)
  4.     {
  5.         _next = next;
  6.     }
  7. public async Task InvokeAsync(HttpContext context)
  8.     {        //......
  9.         // Call the next delegate/middleware in the pipeline
  10.         await _next(context);
  11.     }
  12. }

这里定义一个委托,用于执行具体的业务逻辑,然后在Configure中调用这个委托:

  1. app.UseMiddleware<RequestCultureMiddleware>();

这样还是不太方便,不像我们使用app.UseMvc()这么方便,那么我们来添加一个扩展方法,来实现更方便的复用:

  1. public static class RequestCultureMiddlewareExtensions{  
  2. public static IApplicationBuilder UseRequestCulture(this IApplicationBuilder builder)
  3.     {   
  4.      return builder.UseMiddleware<RequestCultureMiddleware>();
  5.     }
  6. }

然后我们就可以这样使用中间件了:

  1. app.UseRequestCulture();

通过委托构造中间件,应用程序在运行时创建这个中间件,并将它添加到管道中。这里需要注意的是,中间件的创建是单例的,每个中间件在应用程序生命周期内只有一个实例。

原:ASP.NET Core 中间件基本用法 - 拓荒者-NET - 博客园 (cnblogs.com)

评价

.Net Core中的中间件实战

什么是中间件?凡是app点出来的都是中间件,如下图所示今天就来制作一下中间件1,创建一个.netcore的web空项目2,创建一个Re...

asp.net core中间件与过滤器的区别

中间件和过滤器的作用很相似,但是针对的点不一样。过滤器更贴合业务,它关注于应用程序本身,比如你看ActionFilter 和 Res...

关于中间件和过滤器

中间件(Middleware)的作用中间件的运行方式中间件(Middleware)和过滤器(Filter)的区别什么情况我们需要中间件怎么样...

中间件

今天我们记录一下中间件 ,看到下面那些代码, 我们就知道了://处理静态文件中间件 app.UseStaticFiles(); app.UseCooki...

NET Core 中间件(Middleware)和过滤器(Filter)的区别

前言平安夜快乐!未来可期,人间值得!储存阳光,必有远芳。心中有暖,又何惧人生荒凉!一、中间件(Middleware)的作用我...

NET Core 页面中使用户依赖注入+自定义中间件

记录一下 NET CORE 的自定义中间件,我们用的MVC在CORE中就是一个中间件,想用的时候添加就好了,今天简单记录一下CORE添加...

中间件与过滤器的区别

首先在core中中间件是以app开头,过滤器是以services开头.中间件的作用: 中间件就是在应用程序管道中的一个组件,用来拦截...

Net Core使用依赖注入应用过滤器+自定义中间件

圣诞节快乐过什么圣诞节哦,圣诞老人已经被我抓起来了。我们今天主要讲的是NET Core中的依赖注入数据,使用过滤器调用+自定...

identity server4身份验证中间件源码

通过下载ids4的源码来看,可以把相关的源码放到自己项目中,方便分析整个流程和进行一些个性化定制,下面贴一下身份验证中...

WebApi中间件框架注意事项

在写调用WebApi接口的中间件框架时,有些类型错误,需要记录一下。像这种code返回成功!出参却没有数据,错误原因有几种情...

异常处理中间件:区分真异常与逻辑异常

异常处理中间件:区分真异常与逻辑异常[TOC] 处理异常的方式 异常处理页异常处理匿名委托方法IExceptionFilterExceptio...

.net core 静态文件中间件

.net core 静态文件中间件[TOC] 静态文件中间件的能力 支持指定相对路径支持目录浏览支持设置默认文档支持多目录映射 目...

.NET CORE中间件实现用户IP地址记录

中间件与过滤器的区别https://www.tnblog.net/aojiancc2/article/details/2537创建中间件RequestIPMyMiddlewarepublicclass...

.NET CORE 3.1 URL 生成的使用,配合中间件

URL 生成:是指路由基于一系列路由值创建 URL 路径的过程。允许终结点与访问它们的 URL 之间存在逻辑分隔。常用方法GetPath...

.net core3.x中间件处理路由

.net core中可以使用中间件处理路由,如下在Configure直接使用://自定义中间件来实现一个路由 app.Use(next=&gt;asynccon...

core 中间件

前言中间件和过滤器的作用很相似,但是针对的点不一样过滤器更贴合业务,它关注于应用程序本身,比如你看ActionFilter 和 R...