有没有一种方法可以对OWIN中间件使用自定义激活器?

问题描述

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

app.Use<MyCustomMiddleware>();

我想成为调用MyCustomMiddleware构造函数并传递所有必需参数的人。出于动机,请想象一下以下情况:

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

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

解决方法

app.Use((c,next) =>
{
    IMiddleware middleware = new MyCustomMiddleware(...);
    return middleware.InvokeAsync(c,_ => next());
});