.Net Core 中间件与过滤器
在ASP.NET Core中,中间件(Middleware)和过滤器(Filter)是两种用于处理HTTP请求和响应的机制。
中间件是一种装配到应用管道以处理请求和响应的软件组件。每个组件可以选择是否将请求传递到管道中的下一个组件,并可以在管道的任何点终止。
过滤器用于在ASP.NET Core MVC或Web API控制器Action执行前后添加逻辑。
以下是创建中间件和过滤器的简单示例:
中间件示例
public class CustomMiddleware
{
private readonly RequestDelegate _next;
public CustomMiddleware(RequestDelegate next)
{
_next = next;
}
public async Task InvokeAsync(HttpContext context)
{
// 在调用下一个中间件之前可以做的操作
await context.Response.WriteAsync("Before next middleware\n");
// 调用管道中的下一个中间件
await _next(context);
// 在调用下一个中间件之后可以做的操作
await context.Response.WriteAsync("After next middleware\n");
}
}
public static class CustomMiddlewareExtensions
{
public static IApplicationBuilder UseCustomMiddleware(this IApplicationBuilder builder)
{
return builder.UseMiddleware<CustomMiddleware>();
}
}
过滤器示例
public class CustomActionFilter : IActionFilter
{
public void OnActionExecuting(ActionExecutingContext context)
{
// 在Action执行前可以做的操作
}
public void OnActionExecuted(ActionExecutedContext context)
{
// 在Action执行后可以做的操作
}
}
public static class CustomFilterExtensions
{
public static IMvcBuilder AddCustomFilter(this IMvcBuilder builder)
{
return builder.AddFilter<CustomActionFilter>();
}
}
在Startup.cs中配置中间件和过滤器:
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
// 添加自定义中间件
app.UseCustomMiddleware();
// 添加MVC服务并配置过滤器
app.UseMvc(builder =>
{
builder.AddCustomFilter();
});
}
这些示例展示了如何创建自定义中间件和过滤器,并在ASP.NET Core应用程序中注册和使用它们。
评论已关闭