c# .net core中间件,生命周期
在.NET Core中,中间件是组成应用程序请求处理管道的一系列组件,每个组件可以选择是否将请求传递到管道中的下一个组件,并可以在管道的任何点触发。
中间件的生命周期:
- 请求到达,中间件被创建。
- 中间件执行它的任务。
- 中间件可以选择终止管道,请求直接在这里结束,或者调用下一个中间件。
- 请求结束,中间件被销毁。
下面是一个简单的中间件示例:
public class CustomMiddleware
{
private readonly RequestDelegate _next;
public CustomMiddleware(RequestDelegate next)
{
_next = next;
}
public async Task Invoke(HttpContext context)
{
// 在调用下一个中间件之前可以做的事情
context.Items["StartTime"] = DateTime.Now; // 示例:记录开始时间
// 调用下一个中间件
await _next(context);
// 在调用下一个中间件之后可以做的事情
var responseTime = (DateTime.Now - (DateTime)context.Items["StartTime"]).TotalMilliseconds;
context.Items["ResponseTime"] = responseTime; // 示例:记录响应时间
}
}
// 在Startup.cs中配置中间件
public void Configure(IApplicationBuilder app)
{
app.UseMiddleware<CustomMiddleware>();
// ... 其他中间件配置
app.UseEndpoints(endpoints =>
{
endpoints.MapGet("/", async context =>
{
await context.Response.WriteAsync("Hello World!");
});
});
}
在这个示例中,CustomMiddleware
类包含了中间件的逻辑。在 Invoke
方法中,你可以在调用下一个中间件之前和之后执行任何你需要的操作。然后在 Startup.cs
的 Configure
方法中,使用 UseMiddleware
方法添加了自定义中间件到请求处理管道中。
评论已关闭