Exemplo n.º 1
0
        public void WithoutAspneteCore()
        {
            var container = new FabricContainer();

            container.ConfigureSerilogging(logConfiguration =>
                                           logConfiguration.MinimumLevel.Information()
                                           .Enrich.FromLogContext()
                                           .WriteTo.LiterateConsole(outputTemplate: LiterateLogTemplate));

            var first = container.Resolve <ILoggerFactory>(); //Singleton / containercontrolled lifetime.

            var child = container.CreateChildContainer();

            var second = child.Resolve <ILoggerFactory>();

            Assert.AreEqual(first, second);

            child.Dispose();

            //Debugged, logger factory is not disposed.
        }
Exemplo n.º 2
0
        public async Task WithAspNetCore()
        {
            var container = new FabricContainer();

            container.ConfigureSerilogging(logConfiguration =>
                                           logConfiguration.MinimumLevel.Information()
                                           .Enrich.FromLogContext()
                                           .WriteTo.LiterateConsole(outputTemplate: LiterateLogTemplate));



            {
                var child = container.CreateChildContainer();
                child.RegisterType <ILoggerFactory, LoggerFactory>(new ContainerControlledLifetimeManager());

                var childchi = child.CreateChildContainer();
                var first    = childchi.Resolve <ILoggerFactory>(); //Singleton / containercontrolled lifetime.

                var second = child.Resolve <ILoggerFactory>();



                Assert.AreEqual(first, second);



                // But IloggerFactory is not disposed at this point.



                var builder = new WebHostBuilder()
                              .UseKestrel()
                              .ConfigureServices((b, s) =>
                {
                    s.AddSingleton(child);
                })
                              .UseUnityServiceProvider(child)
                              .UseStartup <TestStartup>()
                              .UseContentRoot(Directory.GetCurrentDirectory()).Build();



                //But when we dispose this, then ilogger factory will also get disposed. Why here but not above.
                (builder.Services as IDisposable).Dispose();


                //ILoggerFactory is now disposed.
            }


            {
                var child = container.CreateChildContainer();

                //Ilogger factory is the same, and therefore disposed and now this will fail.

                var builder = new WebHostBuilder()
                              .UseKestrel()
                              .ConfigureServices((b, s) =>
                {
                    s.AddSingleton(child);
                })
                              .UseUnityServiceProvider(child)
                              .UseStartup <TestStartup>()
                              .UseContentRoot(Directory.GetCurrentDirectory()).Build();

                builder.Dispose();
            }
        }