Esempio n. 1
0
        public static void Main(string[] args)
        {
            var isService = !(Debugger.IsAttached || args.Contains("--console"));

            if (isService)
            {
                var pathToExe         = Process.GetCurrentProcess().MainModule.FileName;
                var pathToContentRoot = Path.GetDirectoryName(pathToExe);
                Directory.SetCurrentDirectory(pathToContentRoot);
            }

            var builder = CreateWebHostBuilder(
                args.Where(arg => arg != "--console").ToArray());

            var host = builder.Build();

            if (!AspNetCoreEnvironment.IsLocal())
            {
                builder.AddEbConfig();
            }

            builder.AddAppSettings();

            if (isService)
            {
                host.RunAsCustomService();
            }
            else
            {
                host.Run();
            }
        }
Esempio n. 2
0
        private AmazonQueueProvider InitializeAmazonQueueProvider(IServiceProvider serviceProvider)
        {
            var storageProvider =
                new AmazonQueueProvider($"sportlance-{AspNetCoreEnvironment.ShortEnvironment(_configuration["SLEnvironment"])}-mail-queue");

            storageProvider.InitializeAsync().Wait();
            return(storageProvider);
        }
Esempio n. 3
0
        public void Configure(IApplicationBuilder app)
        {
            if (!AspNetCoreEnvironment.IsProduction())
            {
                app.UseDeveloperExceptionPage();
            }

            app.UseCors(CorsPolicyName);

            app.UseMvc();
        }
Esempio n. 4
0
        // Нужен для EF Core 2.x https://go.microsoft.com/fwlink/?linkid=851728
        public static IWebHost BuildWebHost(string[] args)
        {
            var builder = WebHost.CreateDefaultBuilder(args);

            if (!AspNetCoreEnvironment.IsLocal())
            {
                builder.AddEbConfig();
            }

            builder.AddAppSettings();

            if (!AspNetCoreEnvironment.IsProduction())
            {
                builder.UseSetting("detailedErrors", "true");
                builder.CaptureStartupErrors(true);
            }

            return(builder.UseStartup <Startup>()
                   .Build());
        }
Esempio n. 5
0
        private void ConfigureAmazonServices(IServiceCollection services)
        {
            var awsOptions = _configuration.GetAWSOptions();

            // Это нужно для амазона, потому что там нельзя прописать дефолтный профиль
            // В амазоне нужно в environments добавить эти ключи и значения
            if (!AspNetCoreEnvironment.IsLocal())
            {
                awsOptions.Credentials =
                    new BasicAWSCredentials(_configuration["AWS:AccessKey"], _configuration["AWS:SecretKey"]);
            }

            services.AddDefaultAWSOptions(awsOptions);
            services.AddAWSService <IAmazonS3>();

            services.AddSingleton(InitializeTrainersStorageProvider);
            services.AddSingleton(InitializeTeamsStorageProvider);
            services.AddSingleton(InitializeTeamPhotosStorageProvider);
            services.AddSingleton(InitializeUsersStorageProvider);

            services.AddSingleton(InitializeAmazonQueueProvider);
        }
Esempio n. 6
0
        public void ConfigureServices(IServiceCollection services)
        {
            _logger.LogInformation($"Начинается конфигурация сервисов...");
            //if (AspNetCoreEnvironment.IsLocal())
            //{
            services.AddMvc();
            //}

            services.Configure <SmtpOptions>(_configuration.GetSection(nameof(SmtpOptions)));
            services.Configure <SiteOptions>(_configuration.GetSection(nameof(SiteOptions)));

            var awsOptions = _configuration.GetAWSOptions();

            // Это нужно для амазона, потому что там нельзя прописать дефолтный профиль
            // В амазоне нужно в environments добавить эти ключи и значения
            if (!AspNetCoreEnvironment.IsLocal())
            {
                awsOptions.Credentials =
                    new BasicAWSCredentials(_configuration["AWS:AccessKey"], _configuration["AWS:SecretKey"]);
            }

            services.AddDefaultAWSOptions(awsOptions);

            // 1. Нужно для IService (читать темплейты почты)
            services.AddAWSService <IAmazonS3>();
            // 2. Нужно для MailQueue (Отравлять письма)
            services.AddTransient <IService, Service>();

            services.AddHostedService <MailHostedService>();

            //if (AspNetCoreEnvironment.IsLocal())
            //{
            ConfigureCorsPolicy(services);
            //}
            _logger.LogInformation($"Конфигурация сервисов успешна.");
        }
Esempio n. 7
0
        public static int Main(string[] args)
        {
            Log.Logger = new LoggerConfiguration()
                         .ReadFrom.Configuration(Configuration)
                         .Enrich.FromLogContext()
                         .Enrich.WithSpan()
                         .Enrich.WithExceptionDetails()
                         .Enrich.WithMachineName()
                         .Enrich.WithProperty("Environment", AspNetCoreEnvironment)
                         .WriteTo.Elasticsearch(new ElasticsearchSinkOptions(new Uri(Configuration["ElasticConfiguration:Uri"]))
            {
                AutoRegisterTemplate        = true,
                AutoRegisterTemplateVersion = AutoRegisterTemplateVersion.ESv7,
                IndexFormat = $"{Assembly.GetExecutingAssembly().GetName().Name.ToLower().Replace(".", "-")}-{AspNetCoreEnvironment?.ToLower().Replace(".", "-")}-{DateTime.UtcNow:yyyy-MM}"
            })
                         .CreateLogger();

            try
            {
                Log.Information("Starting web host");

                CreateHostBuilder(args).Build().Run();

                return(0);
            }
            catch (Exception ex)
            {
                Log.Fatal(ex, "Host terminated unexpectedly");
                return(1);
            }
            finally
            {
                Log.CloseAndFlush();
            }
        }
Esempio n. 8
0
 public MailHostedService(ILogger<MailHostedService> logger, IService service, IConfiguration configuration)
     : base($"sportlance-{AspNetCoreEnvironment.ShortEnvironment(configuration["SLEnvironment"])}-mail-queue")
 {
     _service = service;
     _logger = logger;
 }