怪物奇妙物语

宇宙无敌超级美少男的怪物奇妙物语

首页 新随笔 联系 管理
  819 随笔 :: 0 文章 :: 2 评论 :: 16万 阅读

middleware的编写和注册

编写中间件类(middleware-class)

  • 通常,中间件封装在类中,并且通过扩展方法公开。
  • 具有类型为 RequestDelegate 的参数的公共构造函数。
public LoggingMiddleware(RequestDelegate next)
{
_next = next;
}
  • 名为 InvokeInvokeAsync 的公共方法。 此方法必须:

    • 返回 Task
    • 接受类型 HttpContext 的第一个参数。
  • 构造函数和 Invoke/InvokeAsync 的其他参数由依赖关系注入 (DI) 填充。

public async Task Invoke(HttpContext context)
{
Console.WriteLine($"Request path: {context.Request.Path}");
Console.WriteLine($"Request time: {DateTime.Now}");
await _next(context);
}

LoggingMiddleware.cs

public class LoggingMiddleware
{
private readonly RequestDelegate _next;
public LoggingMiddleware(RequestDelegate next)
{
_next = next;
}
public async Task Invoke(HttpContext context)
{
Console.WriteLine($"Request path: {context.Request.Path}");
Console.WriteLine($"Request time: {DateTime.Now}");
await _next(context);
}
}

注册middleware两种方法

  • 通常,创建扩展方法以通过 IApplicationBuilder 公开中间件:
public static class RequestCultureMiddlewareExtensions
{
public static IApplicationBuilder UseRequestLog(
this IApplicationBuilder builder)
{
return builder.UseMiddleware<LoggingMiddleware>();
}
}
// 注册middleware
app.UseRequestLog();
  • 或者使用UseMiddleware函数传入
app.UseMiddleware<LoggingMiddleware>();
posted on   超级无敌美少男战士  阅读(13)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
点击右上角即可分享
微信分享提示