聊聊 ASP.NET Core 中间件:一个简单的中间件例子
在ASP.NET Core中,中间件是组成请求处理管道的组件,每个组件可以在请求管道中选择特定的点处理请求和响应。下面是一个简单的自定义中间件示例:
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Http;
using System.Threading.Tasks;
public class MyCustomMiddleware
{
private readonly RequestDelegate _next; // 下一个中间件的委托
// 构造函数注入下一个中间件的委托
public MyCustomMiddleware(RequestDelegate next)
{
_next = next;
}
// 调用中间件的方法,处理请求
public async Task Invoke(HttpContext context)
{
// 在调用下一个中间件之前可以做的操作
context.Items["Middleware"] = "MyCustomMiddleware";
// 写入一些响应内容作为示例
context.Response.ContentType = "text/plain; charset=utf-8";
await context.Response.WriteAsync("Before next middleware.\n");
// 调用下一个中间件
await _next(context);
// 调用下一个中间件之后可以做的操作
await context.Response.WriteAsync("After next middleware.\n");
}
}
// 在Startup.cs中的Configure方法里使用中间件
public void Configure(IApplicationBuilder app)
{
app.UseMiddleware<MyCustomMiddleware>();
// 其他中间件的配置...
app.UseEndpoints(endpoints =>
{
endpoints.MapGet("/", async context =>
{
await context.Response.WriteAsync("Hello World!");
});
});
}
这个示例展示了如何创建一个简单的自定义中间件,并在ASP.NET Core应用程序中配置和使用它。在Invoke
方法中,我们可以在调用下一个中间件之前和之后执行自定义的逻辑。这种模式是处理HTTP请求管道的有效方式。
评论已关闭