IApplicationBuilder.Use()和IApplicationBuilder.Run()C#Asp.net Core有什么区别?
我们可以使用IApplicationBuilder实例在Startup类的Configure方法中配置中间件。
Run()是IApplicationBuilder实例的扩展方法,该方法将终端中间件添加到应用程序的请求管道中。
Run方法是IApplicationBuilder的扩展方法,并接受RequestDelegate的参数。
Run方法的签名
public static void Run(this IApplicationBuilder app, RequestDelegate handler)
RequestDelegate的签名
public delegate Task RequestDelegate(HttpContext context);
示例
public class Startup{
public Startup(){
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env,
ILoggerFactory loggerFactory){
//在这里使用IApplicationBuilder配置中间件。-
app.Run(async (context) =>{
await context.Response.WriteAsync("你好,世界!");
});
//为了清楚起见,删除了其他代码。-
}
}上面的MyMiddleware函数不是异步的,因此将阻塞线程,直到完成执行为止。因此,通过使用异步使其异步并等待以提高性能和可伸缩性。
public class Startup{
public Startup(){
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env){
app.Run(MyMiddleware);
}
private async Task MyMiddleware(HttpContext context){
await context.Response.WriteAsync("你好,世界! ");
}
}使用配置多个中间件Run()
以下将始终执行第一个Run方法,而永远不会到达第二个Run方法
public void Configure(IApplicationBuilder app, IHostingEnvironment env){
app.Run(async (context) =>{
await context.Response.WriteAsync("1st Middleware");
});
//以下将永远不会执行
app.Run(async (context) =>{
await context.Response.WriteAsync(" 2nd Middleware");
});
}使用
要配置多个中间件,请使用Use()扩展方法。与Run()方法类似,不同之处在于它包括用于调用序列中的下一个中间件的下一个参数
public void Configure(IApplicationBuilder app, IHostingEnvironment env){
app.Use(async (context, next) =>{
await context.Response.WriteAsync("1st Middleware!");
await next();
});
app.Run(async (context) =>{
await context.Response.WriteAsync("2nd Middleware");
});
}热门推荐
10 新年门口花束祝福语简短
11 盘锦结婚祝福语大全简短
12 父母生日祝福语 简短独特
13 家庭恩爱祝福语简短英文
14 高考俄语祝福语大全简短
15 虎年祝福语 诗句唯美简短
16 生日婚礼祝福语简短精辟
17 虎年喝酒拜年祝福语简短
18 教师闺蜜祝福语简短