2017-12-27 19 views
0

맵과 맵을 사용할 때 요청을 인증하는 동안 asp.net 코어 미들웨어에서 분기합니다.지도와 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 오브젝트로 작동하는 지정된 술어의 결과를 기반으로 요청을 분기 할 수 있습니다. HttpContext에는 HTTP 요청에 대한 모든 정보가 들어 있으므로 MapWhen을 사용하면 분기 요청 파이프 라인에 매우 특정한 조건을 사용할 수 있습니다.

Map 전화는 MapWhen으로 쉽게 변환 될 수 있지만 그 반대는 아닙니다. 예를 들어이 Map 전화 : 당신이 지점의 요청에 기반 할 때 Map를 사용

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

그래서 귀하의 질문에 "지도 MapWhen 분기를 사용하기"를 응답 :

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

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

은 다음 MapWhen 호출하는 것과 같습니다 요청 경로 만. HTTP 요청의 다른 데이터를 기반으로 요청을 분기 할 때 MapWhen을 사용하십시오.