面试题答案
一键面试- 定义中间件类:
- 创建一个类,这个类需要有一个构造函数来接收
RequestDelegate
,它代表管道中的下一个中间件。 - 实现
Invoke
或InvokeAsync
方法来处理请求。在InvokeAsync
方法中,我们可以在调用下一个中间件之前记录日志信息。 - 关键类:自定义的中间件类。
- 创建一个类,这个类需要有一个构造函数来接收
- 注册中间件:
- 在
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>();
// 其他中间件配置
}