一、声明中间件处理类
1、类中必须有一个公共构造函数,并且构造函数的第一个参数时RequestDelegate。
2、类中有Invoke或者InvokeAsync函数,并且参数为HttpContext。
例如:
public class NameMiddleware
{
public NameMiddleware(RequestDelegate next)
{
}
public async Task Invoke(HttpContext context)
{
//在此函数中处理需要的逻辑
}
}
二、添加到IApplicationBuilder接口
这里使用到静态类、静态函数为已存在的接口或者类,增加新的函数。
public static class MiddlewareExtensions
{
public static IApplicationBuilder UseNameMiddleware(this IApplicationBuilder builder)
{
return builder.UseMiddleware<NameMiddleware>();
}
}
三、调用
在Startup的Configure,函数中调用
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
app.UseHsts();
}
app.UseNameMiddleware(); // 自定义的中间件
app.UseHttpsRedirection();
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
});
}