/// <summary> /// Creating a service provider is required purely for use by the KMSHostService. /// Any web services it launches will be responsible for initializing their own provider /// </summary> /// <param name="container"></param> /// <returns></returns> static IServiceProvider ConfigureServices(IServiceContainer container) { var services = new ServiceCollection(); StartupConfiguration.Configure(container, services); StartupConfiguration.ConfigureIoC(container, services); StartupConfiguration.ConfigureLogging(container, services); var provider = container.CreateServiceProvider(services); container.RegisterInstance(provider); StartupConfiguration.LoadNLogConfiguration(container, provider, LogManagerConfigFile); container.ScopeManagerProvider = new PerLogicalCallContextScopeManagerProvider(); container.BeginScope(); return(provider); }
public static void UseCoreAsync(this IServiceContainer container, Assembly assembly, IConfiguration configuration, IServiceCollection services) { services .RegisterAppContextServices(configuration) .RegisterTypeLoaderServices() .RegisterCommonServices() .RegisterDataServices() .RegisterManagerServices() .RegisterMapperServices(assembly) .RegisterMigrationEvents() //.RegisterHangFireServices(configuration) .RegisterCachingServices(); container.RegisterAssembly(assembly); var serviceProvider = container.CreateServiceProvider(services); //container.RegisterHangFireJob(serviceProvider); container.RunMigrationEvents(serviceProvider); }
public IServiceProvider ConfigureServices(IServiceCollection services) { if (_loggerFactory == null) { _loggerFactory = new LoggerFactory(); } _container = new ServiceContainer(new ContainerOptions { EnablePropertyInjection = false }); _container.RegisterFrom <ApiCompositionRoot>(); var builder = services .AddMvc() .AddJsonOptions(options => options.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver()); builder.AddMvcOptions(options => options.Filters.Add(new GlobalExceptionFilter(_loggerFactory))); services.AddApiVersioning(options => { options.ReportApiVersions = true; options.AssumeDefaultVersionWhenUnspecified = true; options.DefaultApiVersion = new ApiVersion(1, 0); }); services.AddControllersAsServices(typeof(Startup).Assembly.GetExportedTypes() .Where(t => !t.IsAbstract && !t.IsGenericTypeDefinition) .Where(t => typeof(Controller).IsAssignableFrom(t) || t.Name.EndsWith("Controller", StringComparison.OrdinalIgnoreCase))); services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme) .AddJwtBearer( options => { options.TokenValidationParameters = new TokenValidationParameters { ValidateIssuer = true, ValidateAudience = true, ValidateLifetime = true, ValidateIssuerSigningKey = true, ValidIssuer = Configuration["Jwt:Issuer"], ValidAudience = Configuration["Jwt:Audience"], IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(Configuration["Jwt:Key"])) }; }); //services.AddDbContext<CGenContext>(options => // options.UseSqlServer(Configuration.GetConnectionString("CGenConnection"))); #if (DEBUG) services.AddSwaggerGen(options => { options.SwaggerDoc("v1", new Info { Title = "CGen Core API", Version = "v1", Description = "Candee Generations Core App API Documentation.", TermsOfService = "None", Contact = new Contact { Name = "Tyler Candee", Email = "*****@*****.**", Url = "https://candeegenerations.com" } }); var xmlFile = $"{Assembly.GetEntryAssembly().GetName().Name}.xml"; var xmlPath = Path.Combine(AppContext.BaseDirectory, xmlFile); options.IncludeXmlComments(xmlPath); }); #endif _container.RegisterInstance(_container); return(_container.CreateServiceProvider(services)); }