コード例 #1
0
        public static async Task Main(string[] args)
        {
            var host = Host.CreateDefaultBuilder(args)
                       .ConfigureAppConfiguration((hostContext, config) =>
            {
                var buided = config.Build();
                var path   = buided["pathToConf"];
                if (!Path.IsPathRooted(path))
                {
                    path = Path.GetFullPath(Path.Combine(hostContext.HostingEnvironment.ContentRootPath, path));
                }
                config.SetBasePath(path);
                var env = hostContext.Configuration.GetValue("ENVIRONMENT", "Production");
                config
                .AddInMemoryCollection(new Dictionary <string, string>
                {
                    { "pathToConf", path }
                }
                                       )
                .AddJsonFile("appsettings.json")
                .AddJsonFile($"appsettings.{env}.json", true)
                .AddJsonFile($"appsettings.services.json", true)
                .AddJsonFile("storage.json")
                .AddJsonFile("notify.json")
                .AddJsonFile("kafka.json")
                .AddJsonFile($"kafka.{env}.json", true)
                .AddEnvironmentVariables()
                .AddCommandLine(args);
            })
                       .ConfigureServices((hostContext, services) =>
            {
                var diHelper = new DIHelper(services);
                diHelper.AddNLogManager("ASC.Files");
                services.AddHostedService <ServiceLauncher>();
                diHelper
                .AddServiceLauncher()
                .AddFileConverterService()
                .AddKafkaService()
                .AddFactoryIndexerFileService()
                .AddFactoryIndexerFolderService();

                diHelper.AddNLogManager("ASC.Feed.Agregator");
                services.AddHostedService <FeedAggregatorService>();
                diHelper
                .AddFeedAggregatorService();

                services.AddAutofac(hostContext.Configuration, hostContext.HostingEnvironment.ContentRootPath, true, false, "search.json", "feed.json");
            })
                       .UseConsoleLifetime()
                       .Build();

            using (host)
            {
                // Start the host
                await host.StartAsync();

                // Wait for the host to shutdown
                await host.WaitForShutdownAsync();
            }
        }