简单注入器:将“生活方式”设置为“作用域”不能解决“一次性瞬态组件”错误

时间:2019-07-11 18:36:13

标签: .net asp.net-web-api simple-injector

我正在Web API项目中调用WCF服务,并且正在努力使其正确注册。我曾经在某一时刻工作过,但我怀疑nuget更新已改变了一切。即使将注册类型设置为Lifestyle.Scoped,我现在仍然在验证时遇到一次性瞬态组件错误。

此外,我还检查了所有版本,它们都在同一版本上。 Transient component is registered as transient but implements idisposable

<package id="SimpleInjector" version="4.6.0" targetFramework="net472" />
<package id="SimpleInjector.Integration.WebApi" version="4.6.0" targetFramework="net472" />
<package id="SimpleInjector.Integration.WebApi.WebHost.QuickStart" version="4.6.0" targetFramework="net472" />

这是我的代码:

        public static void Initialize()
        {
            var container = new Container();

            // Lifestyle set as per recommended for API:
            // https://simpleinjector.readthedocs.io/en/latest/lifetimes.html#asyncscoped-vs-webrequest
            container.Options.DefaultScopedLifestyle = new AsyncScopedLifestyle();

            container.Options.UseFullyQualifiedTypeNames = true;

            InitializeContainer(container);

            container.RegisterWebApiControllers(GlobalConfiguration.Configuration);

            container.Verify();

            GlobalConfiguration.Configuration.DependencyResolver =
                new SimpleInjectorWebApiDependencyResolver(container);
        }


        private static void InitializeContainer(Container container)
        {
            // WCF            
            container.Register<IServices>(() => new ServiceClient("endpoint"), Lifestyle.Scoped);
        }

例外:

  

引发的异常:SimpleInjector.dll中的'SimpleInjector.DiagnosticVerificationException'   SimpleInjector.dll中发生类型为'SimpleInjector.DiagnosticVerificationException'的异常,但未在用户代码中处理   配置无效。报告了以下诊断警告:   -[Disposable Transient Component]容器已注册为瞬态,但实现了IDisposable。   有关警告的详细信息,请参见Error属性。请参阅https://simpleinjector.org/diagnostics,如何解决问题以及如何抑制个别警告。

似乎忽略了Lifestyle.Scoped。有什么想法吗?

第二个例外:

  

引发的异常:SimpleInjector.dll中的'SimpleInjector.DiagnosticVerificationException'   SimpleInjector.dll中发生类型为'SimpleInjector.DiagnosticVerificationException'的异常,但未在用户代码中处理   配置无效。报告了以下诊断警告:   -[Disposable Transient Component]容器已注册为瞬态,但实现了IDisposable。   有关警告的详细信息,请参见Error属性。请参阅https://simpleinjector.org/diagnostics,如何解决问题以及如何抑制个别警告。

0 个答案:

没有答案