MST

星途 面试题库

面试题:C#中间件管道中如何自定义一个简单的请求处理中间件

请描述在C#的中间件管道中自定义一个简单请求处理中间件的步骤,该中间件功能为在请求处理前记录日志信息,说明涉及到的关键接口或类,并给出核心代码示例。
16.4万 热度难度
编程语言C#

知识考点

AI 面试

面试题答案

一键面试
  1. 定义中间件类
    • 创建一个类,这个类需要有一个构造函数来接收RequestDelegate,它代表管道中的下一个中间件。
    • 实现InvokeInvokeAsync方法来处理请求。在InvokeAsync方法中,我们可以在调用下一个中间件之前记录日志信息。
    • 关键类:自定义的中间件类。
  2. 注册中间件
    • Startup.cs文件的Configure方法中,使用app.UseMiddleware<自定义中间件类名>()来注册自定义中间件。
    • 关键接口:IApplicationBuilder,通过它的UseMiddleware扩展方法来注册中间件。

核心代码示例:

// 自定义中间件类
public class LoggingMiddleware
{
    private readonly RequestDelegate _next;
    private readonly ILogger<LoggingMiddleware> _logger;

    public LoggingMiddleware(RequestDelegate next, ILogger<LoggingMiddleware> logger)
    {
        _next = next;
        _logger = logger;
    }

    public async Task InvokeAsync(HttpContext context)
    {
        _logger.LogInformation("请求开始处理,路径: {Path}", context.Request.Path);
        await _next(context);
        _logger.LogInformation("请求处理结束,路径: {Path}", context.Request.Path);
    }
}

// 在Startup.cs的Configure方法中注册中间件
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    app.UseMiddleware<LoggingMiddleware>();
    // 其他中间件配置
}