예제 #1
0
        /// <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);
        }
예제 #2
0
        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);
        }
예제 #3
0
        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));
        }