【问题标题】:asp.net core mvc middle ware simple caseasp.net core mvc中间件简单案例
【发布时间】:2019-01-17 11:05:26
【问题描述】:

我正在尝试围绕 Asp.Net 核心 MVC 的中间件概念展开思考。

我了解以下两个是相同的。

app.Use(next => next);

app.Use(next => { return next; });

现在我想了解以下是否也相同。如果有怎么办。

app.Use(next => 
{
    return async context =>
    {
        await next(context);
    };
});

没有编译时错误。

【问题讨论】:

    标签: c# asp.net-core


    【解决方案1】:

    虽然它们确实产生了相同的结果,但在技术上存在细微差别。通过添加额外的async 方法,将创建一个额外的状态机,不会对性能造成显着变化,但值得考虑。

    基本上它与this question 中的关注点非常相似。

    【讨论】:

    • 这不仅仅是Eliding Async and Await。 OP 的最后一个示例创建了一个新的委托,它包装了传入的委托,而第一个示例将传入的委托按原样直接传回。例如,app.Use(next => context => next(context)); 也可以。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-17
    • 2016-07-30
    • 1970-01-01
    相关资源
    最近更新 更多