问题描述
我想控制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());
});