首页 > 后端开发 > C#.Net教程 > IApplicationBuilder.Use() 和 IApplicationBuilder.Run() C# Asp.net Core 之间有什么区别?

IApplicationBuilder.Use() 和 IApplicationBuilder.Run() C# Asp.net Core 之间有什么区别?

WBOY
发布: 2023-09-06 16:01:09
转载
827 人浏览过

IApplicationBuilder.Use() 和 IApplicationBuilder.Run() C# Asp.net Core 之间有什么区别?

我们可以在Startup类的Configure方法中配置中间件,使用 IApplicationBuilder实例。

Run()是IApplicationBuilder实例上的扩展方法,它添加了一个终端

将中间件添加到应用程序的请求管道中。

Run方法是IApplicationBuilder的扩展方法,并接受一个

RequestDelegate的参数。

Run方法的签名

public static void Run(this IApplicationBuilder app, RequestDelegate handler)
登录后复制

RequestDelegate的签名

public delegate Task RequestDelegate(HttpContext context);
登录后复制

Example

的中文翻译为:

示例

public class Startup{
   public Startup(){
   }
   public void Configure(IApplicationBuilder app, IHostingEnvironment env,
   ILoggerFactory loggerFactory){
      //configure middleware using IApplicationBuilder here..
      app.Run(async (context) =>{
         await context.Response.WriteAsync("Hello World!");
      });
      // other code removed for clarity..
   }
}
登录后复制

上面的 MyMiddleware 函数不是异步的,因此会阻塞线程 直到它完成执行为止。因此,通过使用async和 等待以提高性能和可伸缩性。

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("Hello World! ");
   }
}
登录后复制

使用Run()配置多个中间件

以下代码将始终执行第一个Run方法,并且永远不会到达

第二个Run方法

public void Configure(IApplicationBuilder app, IHostingEnvironment env){
   app.Run(async (context) =>{
      await context.Response.WriteAsync("1st Middleware");
   });
   // the following will never be executed
   app.Run(async (context) =>{
      await context.Response.WriteAsync(" 2nd Middleware");
   });
}
登录后复制

USE

要配置多个中间件,请使用 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");
   });
}
登录后复制

以上是IApplicationBuilder.Use() 和 IApplicationBuilder.Run() C# Asp.net Core 之间有什么区别?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:tutorialspoint.com
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板