首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何将现有的OwinMiddleware集成到.Net Core2.0应用程序管道中?

如何将现有的OwinMiddleware集成到.Net Core2.0应用程序管道中?
EN

Stack Overflow用户
提问于 2018-06-01 06:06:51
回答 1查看 826关注 0票数 3

我有几个现有的Owin中间件类,最初是为.Net 4.6应用程序编写的,它们遵循以下模式:

代码语言:javascript
复制
public class MyMiddleware : OwinMiddleware
{
    public MyMiddleware(OwinMiddleware next) : base(next)
    { }

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

我正在编写一个新的.Net Core2.0应用程序,我想在其中使用这些中间件(以及一些不基于Owin的“新风格”中间件)。我很难找到好的文档或这样做的示例,至少是那些与我所拥有的相似的文档或示例(例如,this)

我发现的一个有希望的事情是,Microsoft.AspNetCore.Owin包包含一个扩展方法,UseOwin(),它似乎是前进的道路,但我无法破译如何使用它来调用上面的“遗留”中间件。我意识到我应该在配置我的IApplicationBuilder时使用UseOwin(),但我不够聪明,不能从我在线阅读的内容中获取细节。

做这件事最直接的方法是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-01 07:41:07

看起来最直接的方法是通过UseOwin扩展方法。

我做到了这一点:

代码语言:javascript
复制
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>>();
}));

请注意,微软似乎对OwinMiddleware类施加了很大压力,因为这感觉非常老套。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50633462

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档