public void ConfigureServices(IServiceCollection services)
        {
            services.AddDbContext <MeuDbContext>(options =>
            {
                options.UseSqlServer(ConnectionString.GetConnectionString()).UseQueryTrackingBehavior(QueryTrackingBehavior.NoTracking);
            });

            services.AddMvc(options => { options.RespectBrowserAcceptHeader = true; })
            .AddJsonOptions(op => { op.JsonSerializerOptions.IgnoreNullValues = true; });

            services.AddIdentityConfiguration(Configuration);
            services.AddAutoMapper(typeof(Startup));
            services.AddSwaggerConfig();
            services.ResolveDependencies();
            services.WebApiConfig();
            services.ConfigureRateLimit(Configuration);

            //Ativa compressão dados
            services.AddResponseCompression(options =>
            {
                options.EnableForHttps = true;
                options.Providers.Add <BrotliCompressionProvider>();
                options.Providers.Add <GzipCompressionProvider>();
                options.MimeTypes = ResponseCompressionDefaults.MimeTypes.Concat(new[] { "application/json" });
            });
            services.Configure <GzipCompressionProviderOptions>(options => options.Level = CompressionLevel.Fastest);
            services.ConfigureCookie();
            services.AddControllers(options => { options.Filters.Add <SerilogLoggingActionFilter>(); })
            .AddJsonOptions(op => { op.JsonSerializerOptions.IgnoreNullValues = true; });

            services.AddHealthChecks()
            .AddSqlServer(ConnectionString.GetConnectionString(), name: "Banco de Dados", tags: new[] { "db", "sql", "sqlserver" });

            var datasulSeqSettings = new DatasulSeqSettings();

            Configuration.GetSection("DatasulSeqSettings").Bind(datasulSeqSettings);

            if (datasulSeqSettings.Enabled)
            {
                services.AddHealthChecks().AddUrlGroup(new Uri(datasulSeqSettings.Url), "Datasul Seq Log");
            }

            var cacheSettings = new RedisCacheSettings();

            Configuration.GetSection("RedisCacheSettings").Bind(cacheSettings);

            if (cacheSettings.Enabled)
            {
                services.AddHealthChecks().AddRedis(cacheSettings.ConnectionString, "Cache Redis");
            }

            services.Configure <HstsOptions>(options =>
            {
                options.IncludeSubDomains = true;
                options.MaxAge            = TimeSpan.FromDays(365);
            });

            services.AddHealthChecksUI();
            services.ConfigureCache(Configuration);
        }
Beispiel #2
0
        public static void Main(string[] args)
        {
            var datasulSeqSettings = new DatasulSeqSettings();

            Configuration.GetSection("DatasulSeqSettings").Bind(datasulSeqSettings);

            Log.Logger = new LoggerConfiguration()
                         .ReadFrom.Configuration(Configuration)
                         .Enrich.FromLogContext()
                         .MinimumLevel.Debug()
                         .Filter.ByExcluding("RequestPath = '/hc' and StatusCode = 200")
                         .MinimumLevel.Override("Microsoft.AspNetCore", LogEventLevel.Warning)
                         .WriteTo.Debug()
                         .WriteTo.Seq(datasulSeqSettings.Url)
                         .WriteTo.File(
                datasulSeqSettings.FilePath,
                fileSizeLimitBytes: 1_000_000,
                rollOnFileSizeLimit: true,
                shared: true,
                flushToDiskInterval: TimeSpan.FromSeconds(1))
                         .WriteTo.ColoredConsole(outputTemplate: "[{Timestamp:HH:mm:ss} {Level:u3}] {Message:lj} {Properties:j}{NewLine}{Exception}")
                         .CreateLogger();

            try
            {
                Log.Information("Getting the motors running...");
                CreateHostBuilder(args).Build().Run();
            }
            catch (Exception ex)
            {
                Log.Fatal(ex, "Host terminated unexpectedly");
            }
            finally
            {
                Log.CloseAndFlush();
            }
        }