2016-06-09 3 views
1

커스텀 미들웨어에 추출 할 ASP.NET 코어 코드 조각이 있습니다. 특히 다음 논리를 구현해야합니다. 특정 경로 mapPath이 요청되면 proxyUrl으로 식별되는 다른 호스트로 요청을 프록시하십시오. 이 분기하고 요청 프록시 다음 프록시 미들웨어에 app.Map()를 사용다른 미들웨어를 호출하는 미들웨어

var proxyUri = new Uri(proxyUrl); 
builder.Map(
    mapPath, 
    appMapped => 
    { 
     appMapped.RunProxy(
      new ProxyOptions 
       { 
        Scheme = proxyUri.Scheme, 
        Host = proxyUri.Host, 
        Port = proxyUri.Port.ToString() 
       }); 
    } 
); 

음 : Startup.cs에서

다음 코드

트릭을 수행합니다.

(어떻게)이 논리를 사용자 정의 및 재사용 가능한 미들웨어로 추출 할 수 있습니까? 아니면 여기에 "진짜"미들웨어를 사용할 수 없습니까? 내가 할 수있는 것은 물론 확장 메소드를 작성하는 것입니다. app.UseMapProxy() 그리고 거기에 로직 1 : 1을 넣었지만 "진짜"미들웨어 클래스로도 할 수 있을지 궁금해했습니다.

답변

1

이러한 종류의 설치는 IApplicationBuilder 확장 방법으로 가장 잘 캡슐화됩니다. 기존 구성 요소를 넘어 요청 구성 기능을 추가하지 않고 함께 연결합니다.

+0

좋아요, 그게 제가'app.UseMapProxy()'메소드를 언급했을 때 의미했던 것입니다. 단지 확장 된 것입니다. "진짜"미들웨어인지 궁금해. 이것을 지적 해 주셔서 감사합니다. – Matthias

+0

한 가지 더 궁금한 점이 있습니다. 요청 당 실제 기능을 추가하는 구성 요소를 구현하는 방법과 다른 미들웨어를 사용하고 싶습니다. 커스텀 미들웨어에 요청당한 것들을 추출하고'IApplicationBuilder' 확장에서 다른 미들웨어와 함께 작성 하시겠습니까? – Matthias

+0

예, 작동합니다. – Tratcher