2017-05-18 9 views
2

TL; DR;.NET 표준 OWIN 미들웨어 생성

.NET 표준에서 Microsoft.Owin과 호환 될 Owin 미들웨어를 만드는 방법이 있습니까? 내가 보드에 Owin로 "고전"ASP.NET 응용 프로그램에 추가

public class RequestTrackingMiddleware 
{ 
    private readonly RequestDelegate _next; 

    public RequestTrackingMiddleware(RequestDelegate next) 
    { 
     _next = next; 
    } 

    public async Task Invoke(HttpContext context) 
    { 
     var sw = Stopwatch.StartNew(); 
     await _next(context); 
     sw.Stop(); 
     Console.WriteLine(sw); 
    } 

: 세부

내가 좋아하는 간단한 미들웨어를 만들었습니다. 사용 : Microsoft.AspNet.Identity.Owin.IdentityFactoryMiddleware`2 [...]와 Microsoft.AspNetCore.Http.RequestDelegate 사이에 사용할 수

없음 변환 :

public override void Configuration(IAppBuilder app) 
{ 
    app.Use<FinaiRequestTrackingMiddleware>(); 
} 

그러나 나는 끝낼 .

아이디어가 있으십니까?

+2

왜'Invoke' 메소드에서 코드를 추출하고 각 버전의 Owin에 대해 하나씩,'RequestTrackingMiddleware' 클래스의 두 가지 변종을 만드는 것이 좋을까요? – DavidG

+0

@DavidG 내가 해결책을 찾지 못한다면 나는 이것을 정확히 끝낼 것이다. 하지만 .NET 표준이 코드에서 #if를 해결할 것으로 기대하고 있습니다. –

+0

.Net 표준에 문제가 있다고 생각하지 않습니다. Owin의 다른 변형이라고 생각합니다. – DavidG

답변

2

그렇습니다. 그렇다고해도 OWIN 미들웨어는 아닙니다. ASP.NET 코어 미들웨어입니다. 이 블로그 게시물 http://benfoster.io/blog/how-to-write-owin-middleware-in-5-different-steps을 참조하십시오 (3 단계가 가장 관련이 있습니다). 그런 다음 Katana 또는 ASP.NET Core에서 OWIN 미들웨어 (OWIN 브리지를 통해)를 사용할 수 있습니다 (예 : https://codeopinion.com/migrate-from-katana-asp-net-core/ 참조).