簡體   English   中英

如何將現有的 OwinMiddleware 集成到 .Net Core 2.0 應用程序管道中?

[英]How to integrate existing OwinMiddleware into a .Net Core 2.0 app pipeline?

我有一些現有的 Owin 中間件類,最初是為 .Net 4.6 應用程序編寫的,它們遵循以下模式:

public class MyMiddleware : OwinMiddleware
{
    public MyMiddleware(OwinMiddleware next) : base(next)
    { }

    public override async Task Invoke(IOwinContext context)
    {
        // do stuff
        await Next.Invoke(context)
    }
}

我正在編寫一個新的 .Net Core 2.0 應用程序,我想在其中使用這些中間件(以及一些不基於 Owin 的“新型”中間件)。 我很難找到好的文檔或執行此操作的示例,至少是與我所擁有的類似的文檔或示例(例如, this

我發現的一件有希望的事情是Microsoft.AspNetCore.Owin包包含一個擴展方法UseOwin() ,這似乎是前進的道路,但我無法破譯如何使用它來調用我的“遺留”中間件以上。 我意識到我應該在配置IApplicationBuilder時使用UseOwin()但我不夠聰明,無法從我在線閱讀的內容中獲取詳細信息。

做到這一點最直接的方法是什么?

似乎最直接的方法是通過UseOwin擴展方法。

我能夠讓它工作:

public class MyTestMiddleware : OwinMiddleware
{
    public MyTestMiddleware(OwinMiddleware next) : base(next) {}

    public override async Task Invoke(IOwinContext context)
    {
        System.Diagnostics.Debug.WriteLine("INVOKED");

        await Next.Invoke(context);
    }
}

app.UseOwin(setup => setup(next =>
{
    var owinAppBuilder = new AppBuilder();

    // set the DefaultApp to be next so that the ASP.NET Core pipeline runs
    owinAppBuilder.Properties["builder.DefaultApp"] = next;

    // add your middlewares here as Types
    owinAppBuilder.Use(typeof(MyTestMiddleware));

    return owinAppBuilder.Build<Func<IDictionary<string, object>, Task>>();
}));

請注意,Microsoft 似乎對OwinMiddleware類進行了OwinMiddleware推動,因為這感覺很hacky。

我有同樣的情況,但是我正在使用.net core 2.1應用程序。 我的解決方案無法識別OwinMiddleware類。 除了Microsoft.AspNetCore.Owin,您是否添加了其他任何內容? 您是如何獲得應用程序以加載程序集的?

謝謝!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM