聊聊ASP.net Core IApplicationBuilder中 Run 和 Use方法的区别

简述

    Use:通过Use的方式注册中间件,可以控制是否将请求传递到下一个中间件;

    Run:通过Run的方式注册中间件,一般用于断路或请求管道末尾,即不会将请求传递下去;.

    这两个方法都在startup class的configure方法里面调用。都是用来向应用请求管道里面添加中间件的。如下案例:

public void Configure(IApplicationBuilder app, IHostingEnvironment env){  //可以看到通过匿名函数实现的中间件是内嵌在启动类文件中的,因此通常也叫做内联中间件。   app.Use(async (context, next) =>{        await context.Response.WriteAsync("One Holle Word 1!\r\n");        await next();//传递到下一个中间件,而不是先执行下面的        await context.Response.WriteAsync("One Holle Word 2!\r\n");   });   app.Run(async (context) =>{         await context.Response.WriteAsync("Two Holle Word 1!\r\n");         await context.Response.WriteAsync("Two Holle Word 2!\r\n");   });}

执行结果,注意看执行顺序。

聊聊ASP.net Core IApplicationBuilder中 Run 和 Use方法的区别