IApplicationBuilder 中间件 - 为什么两个使用重载?
IApplicationBuilder middleware - why two use overloads?
我试图找出 IApplicationBuilder 中两个 app.Use()
方法的用例。
app.Use(Func<HttpContext,Func<Task>, Task> middleware)
对
app.Use(Func<RequestDelegate,RequestDelegate> middleware)
回答 如何 使用它们,但我想知道 为什么 你会使用一个而不是另一个.
IApplicationBuilder
接口仅定义
IApplicationBuilder Use(Func<RequestDelegate, RequestDelegate> middleware)
第二个 an extension method 允许
Adds a middleware delegate defined in-line to the application's request pipeline.
并在内部调用 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);
};
});
}
我试图找出 IApplicationBuilder 中两个 app.Use()
方法的用例。
app.Use(Func<HttpContext,Func<Task>, Task> middleware)
对
app.Use(Func<RequestDelegate,RequestDelegate> middleware)
IApplicationBuilder
接口仅定义
IApplicationBuilder Use(Func<RequestDelegate, RequestDelegate> middleware)
第二个 an extension method 允许
Adds a middleware delegate defined in-line to the application's request pipeline.
并在内部调用 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);
};
});
}