如何在 ASP.NET Core 中使用 IApplicationBuilder 中间件重载

How to use IApplicationBuilder middleware overload in ASP.NET Core

ASP.NET Core 为 app.Use() 方法提供了两个重载。通常我们只使用一个重载,即

app.Use(Func<HttpContext,Func<Task>, Task> middleware)

用作

app.Use(async (context, next) => {
    await context.Response.WriteAsync("1st middleware <br/>");
    await next.Invoke();
});

我想使用的另一个重载是

app.Use(Func<RequestDelegate,RequestDelegate> middleware)

我找不到如何使用此重载的示例。任何想法都会很棒。

Func<RequestDelegate, RequestDelegate>是委托,接受委托,returns接受委托。您可以将它与此 lambda 表达式一起使用:

app.Use(next => async context => 
{
    await context.Response.WriteAsync("Hello, World!");
    await next(context);
}