2017-12-27 3 views
0

Wann Map und MapWhen Zweig in asp.net Core Middleware verwenden, während wir Anfrage authentifizieren. nurUnterschied zwischen Map und MapWenn Zweig in asp.net Core Middleware?

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(""); 
      }); 

     }); 
    } 

Antwort

2

Map konnte die Anfrage verzweigen basierend auf Übereinstimmung des Pfades angegeben Anfrage. MapWhen ist leistungsfähiger und ermöglicht das Verzweigen der Anfrage basierend auf dem Ergebnis des angegebenen Prädikats, das mit dem aktuellen Objekt HttpContext arbeitet. So weit HttpContext enthält alle Informationen über HTTP-Anfrage, MapWhen können Sie sehr spezielle Bedingungen für die Verzweigung der Anfrage Pipeline verwenden.

Jeder Map Aufruf könnte leicht in MapWhen umgewandelt werden, aber nicht umgekehrt. Zum Beispiel dieses Map Aufruf:

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

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

entspricht den folgenden MapWhen Aufruf:

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

So Ihre Frage zu beantworten: „Wenn Karte und MapWhen Zweig verwenden“: Map verwenden, wenn Sie Verzweigungsanfrage basierend auf nur Pfad anfordern. Verwenden Sie MapWhen, wenn Sie eine Anforderung basierend auf anderen Daten aus der HTTP-Anforderung verzweigen.

Verwandte Themen