public static IHostBuilder CreateHostBuilder(string[] args) { return(Host.CreateDefaultBuilder(args) .UseServiceProviderFactory(new AutofacServiceProviderFactory()) .UseWindowsService() .ConfigureServices((hostContext, services) => { IConfiguration configuration = hostContext.Configuration; services.AddHostedService <Worker>(); SeriLogSettings seriLogSettings = new SeriLogSettings(); configuration.Bind("SeriLog", seriLogSettings); services.AddSingleton(seriLogSettings); WorkerSettings workerSettings = new WorkerSettings(); configuration.Bind("WorkerSettings", workerSettings); services.AddSingleton(workerSettings); SMTPServerSettings smtpServerSettings = new SMTPServerSettings(); configuration.Bind("SMTPServerSettings", smtpServerSettings); services.AddSingleton(smtpServerSettings); MailAppSettings mailAppSettings = new MailAppSettings(); configuration.Bind("MailAppSettings", mailAppSettings); services.AddSingleton(mailAppSettings); services.AddDbContext <AppDbContext>(cnf => cnf.UseSqlServer(configuration.GetConnectionString("DBConString"))); }) .ConfigureContainer <ContainerBuilder>((hostContext, builder) => { IConfiguration configuration = hostContext.Configuration; builder.RegisterModule(new SharedKernelModule(configuration)); builder.RegisterModule(new CoreModule(configuration)); builder.RegisterModule(new InfrastructureModule(configuration)); })); }
public static void AddAPIConfig(this IServiceCollection services, IConfiguration configuration, bool useCORS = default, bool useSwagger = default, bool useFluentValidation = default) { #region App localization services.Configure <RequestLocalizationOptions>(options => { options.DefaultRequestCulture = new Microsoft.AspNetCore.Localization.RequestCulture(ResourceEnum.Language.en.ToString()); options.SupportedCultures = new List <CultureInfo> { new CultureInfo(ResourceEnum.Language.en.ToString()) }; options.RequestCultureProviders.Insert(0, new Microsoft.AspNetCore.Localization.CustomRequestCultureProvider(context => { string userLangs = context.Request.Headers["Accept-Language"].ToString(); string firstLang = userLangs.Split(',').FirstOrDefault(); string defaultLang = string.IsNullOrEmpty(firstLang) ? ResourceEnum.Language.en.ToString() : firstLang; return(System.Threading.Tasks.Task.FromResult(new Microsoft.AspNetCore.Localization.ProviderCultureResult(defaultLang, defaultLang))); })); }); #endregion #region MVC Core if (useFluentValidation) { services.AddControllers().AddFluentValidation().AddControllersAsServices(); } else { services.AddControllers().AddControllersAsServices(); } AppSettings appSettings = new AppSettings(); configuration.Bind("AppSettings", appSettings); services.AddSingleton(appSettings); SeriLogSettings seriLogSettings = new SeriLogSettings(); configuration.Bind("SeriLog", seriLogSettings); services.AddSingleton(seriLogSettings); #endregion #region Swagger if (useSwagger) { SwaggerSettings swaggerSettings = new SwaggerSettings(); configuration.Bind("SwaggerSettings", swaggerSettings); services.AddSingleton(swaggerSettings); services.AddSwaggerGen(c => { c.SwaggerDoc(swaggerSettings.Version, new OpenApiInfo { Title = swaggerSettings.Title, Version = swaggerSettings.Version, Description = swaggerSettings.Description }); c.AddSecurityDefinition("Bearer", new OpenApiSecurityScheme { Description = swaggerSettings.Description, Name = "Authorization", In = ParameterLocation.Header, Type = SecuritySchemeType.ApiKey, Scheme = "Bearer" }); c.AddSecurityRequirement(new OpenApiSecurityRequirement() { { new OpenApiSecurityScheme { Reference = new OpenApiReference { Type = ReferenceType.SecurityScheme, Id = "Bearer" }, Scheme = "oauth2", Name = "Bearer", In = ParameterLocation.Header, }, new System.Collections.Generic.List <string>() } }); c.CustomSchemaIds(i => i.FullName.Replace("Unicom.Notifications.Core.DTOs.UseCase.Escalation.", string.Empty) .Replace("Unicom.Notifications.SharedKernal.Helper.HttpInOutHandler.", string.Empty) .Replace("Unicom.Notifications.SharedKernal.Enum.", string.Empty) .Replace("System.Collections.Generic.", string.Empty) .Replace("Unicom.Notifications.SharedKernal.Helper.Pagination.", string.Empty) .Replace("Unicom.Notifications.Core.DTOs.UseCase.Notification.", string.Empty) .Replace("Unicom.Notifications.Core.", string.Empty) .Replace("Unicom.Notifications.SharedKernal.", string.Empty) .Replace("Unicom.Notifications.Core.DTOs.UseCase.User.", string.Empty) .Replace("`1[[", "[") .Replace("`2[[", "[") .Replace(", Unicom.Notification.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]", "]") .Replace(", NotificationHubSystem.SharedKernal, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]", string.Empty) .Replace(", System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]", string.Empty) .Replace("[System.String", "System.String") .Replace("HttpEnum+", "HttpEnum.") ); }); } #endregion #region CORS if (useCORS) { IConfigurationSection originsSection = configuration.GetSection(AllowedOrigins); string[] origns = originsSection.AsEnumerable().Where(s => s.Value != null).Select(a => a.Value).ToArray(); services.AddCors(options => { options.AddPolicy(AllowedOrigins, builder => builder.WithOrigins(origns).AllowAnyMethod().AllowAnyHeader()); }); } #endregion }
public Logger(SeriLogSettings seriLogSettings) { _seriLogSettings = seriLogSettings; InitializeLogger(); }