aspnetcore的中间件
Posted diwu0510
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了aspnetcore的中间件相关的知识,希望对你有一定的参考价值。
Run会终止中间件继续传递
1 app.Run(new RequestDelegate(async context => 2 { 3 await Task.Run(() => 4 { 5 context.Response.WriteAsync("被Run截取到了"); 6 }); 7 })); 8 9 app.Run(new RequestDelegate(async context => 10 { 11 await context.Response.WriteAsync("被Run截取到了"); 12 }));
Use 会继续传递
app.Use(async (context, next) => { context.Response.Headers.Add("ResponseAt", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss ffff")); await next(); });
Map和MapWhen
app.Map("/Test", configuration => { configuration.Run(async context => { await context.Response.WriteAsync("Test被截取了"); }); }); app.MapWhen( context => context.Request.Path.Value.Contains("Test", StringComparison.CurrentCultureIgnoreCase), configuration => configuration.Run(async context => { await context.Response.WriteAsync("带Test的被截取了"); }));
使用UseMiddleware
public class MyMiddleware { private readonly RequestDelegate _next; private readonly ILogger _logger; private readonly string _prefix; public MyMiddleware(RequestDelegate next, ILoggerFactory factory, string prefix) { _next = next; _logger = factory.CreateLogger<MyMiddleware>(); _prefix = prefix; } public async Task Invoke(HttpContext context) { _logger.LogInformation("【" + _prefix + "】" + context.Request.Path.Value); context.Response.Headers.Add("ResponseAt", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss ffff")); await _next(context); } }
app.UseMiddleware<MyMiddleware>("博客");
以上是关于aspnetcore的中间件的主要内容,如果未能解决你的问题,请参考以下文章
Microsoft.AspNetCore.Server.IIS.Core.IISHttpContextOfT 中间件 C# .NET Core 2.2