【问题标题】:Is threre a way to use custom activator for OWIN middlewares?有没有办法为 OWIN 中间件使用自定义激活器?
【发布时间】:2020-10-30 11:20:00
【问题描述】:

我想控制 OWIN 创建注册中间件的方式。例如使用以下代码注册MyCustomMiddleware时:

app.Use<MyCustomMiddleware>();

我想成为调用MyCustomMiddleware 构造函数并传递所有需要的参数的人。作为动机,请想象以下场景:

  • MyCustomMiddleware 构造函数需要一些应根据当前请求创建的参数,
  • 应从 DI 容器解析参数,
  • 我想控制MyCustomMiddleware 的生命周期。

我发现了一些关于如何将 OWIN 与 SimpleInjector 或 Ninject 一起使用的 cmets。但是我找不到任何独立于特定 DI 库的东西。

【问题讨论】:

    标签: .net dependency-injection owin owin-middleware


    【解决方案1】:
    app.Use((c, next) =>
    {
        IMiddleware middleware = new MyCustomMiddleware(...);
        return middleware.InvokeAsync(c, _ => next());
    });
    

    【讨论】:

    • 谢谢,但是这不适用于我想使用app.Use&lt;MyCustomMiddleware&gt;()app.Use(typeof(MyCustomMiddleware)) 的情况。
    • 要么你提供类型,框架将使用反射为你创建类型,要么你使用我在这里介绍的方法,它允许你自己调用构造函数。这些是您的选择。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-19
    • 2019-08-26
    • 2014-05-05
    相关资源
    最近更新 更多