我试图弄清楚IApplicationBuilder中两个app.Use()
方法的用例。
app.Use(Func<HttpContext,Func<Task>, Task> middleware)
VS
app.Use(Func<RequestDelegate,RequestDelegate> middleware)
How to use IApplicationBuilder middleware overload in ASP.NET Core回答如何使用它们,但我想知道为什么你会使用其中一个。
答案 0 :(得分:2)
IApplicationBuilder
接口仅定义
IApplicationBuilder Use(Func<RequestDelegate, RequestDelegate> middleware)
秒只是an extension method允许
在应用程序的请求管道中添加一个内联定义的中间件委托。
并在内部调用IApplicationBuilder.Use
:
public static IApplicationBuilder Use(this IApplicationBuilder app, Func<HttpContext, Func<Task>, Task> middleware)
{
return app.Use(next =>
{
return context =>
{
Func<Task> simpleNext = () => next(context);
return middleware(context, simpleNext);
};
});
}