2017-05-18 35 views
2

TL; DR;在.NET標準中創建OWIN中間件

有沒有辦法在.NET標準中創建一個Owin中間件,這個中間件會與Microsoft.Owin向後兼容?

詳細

我創建了一個簡單的中間件,如:

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

我Owin加入它 「經典」 ASP.NET應用程序在黑板上。使用:

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

但我結束了:

Microsoft.AspNet.Identity.Owin.IdentityFactoryMiddleware`2 [...]和Microsoft.AspNetCore.Http.RequestDelegate之間沒有可用的轉換。

任何想法?

+2

爲什麼不直接在'Invoke'方法中提取代碼並創建RequestTrackingMiddleware'類的兩個變體,每個Owin版本都有一個變體。 – DavidG

+0

@DavidG如果我找不到解決方案,我將以此完結。但我希望.NET標準將解決代碼 –

+0

中的#if問題。我不認爲這是.Net標準的問題,我認爲它是Owin的不同變體。 – DavidG

回答