【问题标题】:How to use IApplicationBuilder middleware overload in ASP.NET Core如何在 ASP.NET Core 中使用 IApplicationBuilder 中间件重载
【发布时间】:2017-08-11 10:21:51
【问题描述】:

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)

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

【问题讨论】:

    标签: c# asp.net-core-mvc middleware asp.net-core-middleware


    【解决方案1】:

    Func&lt;RequestDelegate, RequestDelegate&gt; 是一个委托,它接受一个委托并返回一个委托。您可以将它与这个 lambda 表达式一起使用:

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

    【讨论】:

    • Func&lt;T,TResult&gt; 是委托而不是 lambda,尽管它可以表示为 Lambda(也称为箭头函数)。但它也可以表示为委托:delegate(HttpContext context) { ...},或者通过传递/分配一个方法。
    猜你喜欢
    • 2018-08-25
    • 2021-05-12
    • 2017-04-27
    • 1970-01-01
    • 1970-01-01
    • 2018-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多