示例#1
0
        static void Main(string[] args)
        {
            var environment = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT");

            if (string.IsNullOrEmpty(environment))
            {
                environment = "Development";
            }

            var directory = Directory.GetCurrentDirectory();

            var config = new ConfigurationBuilder()
                         .SetBasePath(directory)
                         .AddCommandLine(args)
                         .AddJsonFile($"appsettings.{environment}.json")
                         .Build();

            var services = new ServiceCollection();

            services.AddLogging();

            var startup = new Startup(config);

            startup.ConfigureService(services);

            var containerBuilder = new Autofac.ContainerBuilder();

            containerBuilder.Populate(services);

            var container = containerBuilder.Build();
            var provider  = new AutofacServiceProvider(container);

            var logger = provider.GetService <ILoggerFactory>();

            logger.AddNLog();

            GlobalDiagnosticsContext.Set("currentDirectory", directory);
            LogManager.LoadConfiguration("nlog.config");

            IAction action = null;

            var jobConfig = config.GetSection("JobConfig").Get <JobConfig>();

            switch (jobConfig.Action)
            {
            case "schedulePeriodicInspection":
                action = provider.GetService <SchedulePeriodicInspectionAction>();
                break;
            }

            try
            {
                action?.Invoke().GetAwaiter().GetResult();
            }
            catch (Exception ex)
            {
                var log = LogManager.GetCurrentClassLogger();
                log.Error(ex);
            }
        }
示例#2
0
        private static async Task HostingExtensionMethodsAsync(string[] args, CancellationToken ct)
        {
            var loggerFactory = new LoggerFactory()
                                .AddConsole(LogLevel.Trace, true);

            var logger = loggerFactory.CreateLogger <Program>();

            using (logger.BeginScope("Example:{exampleNumber}", "02"))
            {
                logger.LogInformation("Hosting an application using extension methods");

                using (var hostBuilder = new HostBuilder("ASPNETCORE_ENVIRONMENT")
                                         .UseLoggerFactory(loggerFactory)
                                         .ConfigureConfigurationBuilder(param =>
                {
                    param.Builder
                    .SetBasePath(param.Environment.ContentRootPath)
                    .AddJsonFile("appsettings.json", true, true)
                    .AddJsonFile($"appsettings.{param.Environment.Name}.json", true, true)
                    .AddEnvironmentVariables()
                    .AddCommandLine(args);
                })
                                         .ConfigureConfiguration(param =>
                {
                    if (param.Environment.IsDevelopment())
                    {
                        param.Configuration["CacheTimeoutInMs"] = "1000";
                    }
                })
                                         .ConfigureLoggerFactory(param =>
                {
                    NLog.LogManager.LoadConfiguration(
                        param.Environment.ContentRootFileProvider.GetFileInfo(
                            param.Environment.IsDevelopment()
                                        ? "nlog.config"
                                        : $"nlog.{param.Environment.Name}.config")
                        .PhysicalPath);

                    param.LoggerFactory.AddNLog();
                })
                                         .ConfigureServiceCollection(param =>
                {
                    param.ServiceCollection
                    .AddOptions()
                    .Configure <ExampleHostOptions>(param.Configuration)
                    .AddSingleton(k => k.GetRequiredService <IOptions <ExampleHostOptions> >().Value);
                })
                                         .UseServiceProviderBuilder(param =>
                {
                    var container = new Autofac.ContainerBuilder();
                    container.Populate(param.ServiceCollection);
                    return(new AutofacServiceProvider(container.Build()));
                }))
                {
                    await hostBuilder.RunHostAsync <ExampleHost>(ct);
                }

                logger.LogInformation("Terminated");
            }
        }
示例#3
0
        public override IServiceProvider BuildServiceProvider(IServiceProviderBuilderParam param)
        {
            var container = new Autofac.ContainerBuilder();

            container.Populate(param.ServiceCollection);
            return(new AutofacServiceProvider(container.Build()));
        }
示例#4
0
        test_xx()
        {
            var collection = new ServiceCollection();

            var containerBuilder = new Autofac.ContainerBuilder();

            containerBuilder.Populate(collection);
            using var container = containerBuilder.Build();
        }