使用自动交叉布线时,Simple Injector不包含ASP.NET Core服务

时间:2018-07-05 16:30:50

标签: c# inversion-of-control simple-injector

我正在将Simple Injector与ASP.NET Core 2.1配合使用,如下所示启用了自动交叉布线,但是当我进行container.GetCurrentRegistrations()时,Simple Injector容器中没有任何可用的ASP.NET Core服务。 / p>

container.Options.DefaultScopedLifestyle = new AsyncScopedLifestyle();

services.AddHttpContextAccessor>();
services.AddSingleton<IControllerActivator>(
    new SimpleInjectorControllerActivator(container));

services.EnableSimpleInjectorCrossWiring(container);
services.UseSimpleInjectorAspNetRequestScoping(container);

请提出可能是什么问题?

1 个答案:

答案 0 :(得分:1)

ASP.NET Core注册存在于内置配置系统中,并且仅在注册的应用程序组件依赖于ASP.NET Core组件的情况下才链接到Simple Injector。自动交叉布线不会复制所有ASP.NET Core注册。

很明显,这里没有问题。如果您想知道ASP.NET Core内部包含什么内容,则必须深入研究ServiceCollection。如果您想知道在Simple Injector中注册了哪些应用程序组件,则可以使用Simple Injector的调试器视图来执行此操作,或者像当前一样调用GetCurrentRegistrations