2017-12-27 1062 views
0

什麼時候使用Map和MapWhen在我們正在驗證請求的時候在asp.net核心中間件中分支。Map和MapWhen在asp.net核心中間件中的區別?

public void Configure(IApplicationBuilder app, IHostingEnvironment env) 
    { 

     app.Map("", (appBuilder) => 
     { 
      appBuilder.Run(async (context) => { 

       await context.Response.WriteAsync(""); 
      }); 
     }); 

     app.MapWhen(context => context.Request.Query.ContainsKey(""), (appBuilder) => 
     { 
      appBuilder.Run(async (context) => 
      { 
       await context.Response.WriteAsync(""); 
      }); 

     }); 
    } 

回答

2

Map只能根據指定的請求路徑的匹配來分支請求。 MapWhen功能更強大,並允許根據與當前對象一起運行的指定謂詞的結果來分支請求。 到目前爲止HttpContext包含有關HTTP請求的所有信息,MapWhen允許您使用非常特定的條件來分支請求管道。

任何Map呼叫可以很容易地轉換爲MapWhen,但反之亦然。例如,這Map電話:

app.Map("SomePathMatch", (appBuilder) => 
{ 
    appBuilder.Run(async (context) => { 

     await context.Response.WriteAsync(""); 
    }); 
}); 

等同於以下MapWhen電話:

app.MapWhen(context => context.Request.Path.StartsWithSegments("SomePathMatch"), (appBuilder) => 
{ 
    appBuilder.Run(async (context) => 
    { 
     await context.Response.WriteAsync(""); 
    }); 
}); 

所以回答你的問題「何時使用地圖和MapWhen分支」:當您根據分行要求使用Map請求路徑。基於來自HTTP請求的其他數據轉移請求時,請使用MapWhen