Пример #1
0
        // This method gets called by the runtime. Use this method to add services to the container.
        public IServiceProvider ConfigureServices(IServiceCollection services)
        {
            services.Configure <EventBrokerOptions>(Configuration.GetSection(nameof(EventBrokerOptions)));

            services.AddEntityFrameworkNpgsql().AddDbContext <ApplicationDBContext>(options =>
                                                                                    options.UseNpgsql(Configuration.GetConnectionString("DefaultConnection"), b => b.MigrationsAssembly("QZElma.Web")));

            services.Configure <CookiePolicyOptions>(options =>
            {
                // This lambda determines whether user consent for non-essential cookies is needed for a given request.
                options.CheckConsentNeeded    = context => true;
                options.MinimumSameSitePolicy = SameSiteMode.None;
            });

            services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);

            //ConfigureService
            services.Scan(x => x.FromAssemblies(AppDomain.CurrentDomain.GetAssemblies())
                          .AddClasses(classes => classes.WithAttribute <RepositoryService>())
                          .AsImplementedInterfaces()
                          .WithTransientLifetime()
                          .AddClasses(classes => classes.WithAttribute <HelperService>())
                          .AsImplementedInterfaces()
                          .WithTransientLifetime()
                          .AddClasses(classes => classes.WithAttribute <SelfHelperService>())
                          .AsSelf()
                          .WithTransientLifetime()
                          .AddClasses(classes => classes.WithAttribute <Server.Models.Attributes.ChatBotServiceAtt>())
                          .AsSelf()
                          .WithSingletonLifetime()
                          .AddClasses(classes => classes.WithAttribute <SingletonService>())
                          .AsSelf()
                          .WithSingletonLifetime()
                          );

            services.AddHostedService <ChatBotListener>();

            services.AddSingleton <ChatBot>();

            services.AddCap(x =>
            {
                var eventBrokerOptions = new EventBrokerOptions();
                Configuration.GetSection(nameof(EventBrokerOptions)).Bind(eventBrokerOptions);

                x.UsePostgreSql(eventBrokerOptions.DBConnection);
                x.UseRabbitMQ(eventBrokerOptions.RabbitMQHost);
                x.Version = "v1.0";
            });

            services.AddLogging(configure => configure
                                .AddConsole()
                                .AddDebug());

            var builder = new ContainerBuilder();

            builder.Populate(services);
            ApplicationContainer = builder.Build();

            AutoMapperProfile.Initialize();

            return(new AutofacServiceProvider(ApplicationContainer));
        }