示例#1
0
        public IServiceProvider ConfigureServices(IServiceCollection services)
        {
            services.AddMvc(options =>
            {
                options.ReturnHttpNotAcceptable = true;
                options.OutputFormatters.RemoveType <HttpNoContentOutputFormatter>();
                options.InputFormatters.Add(new XmlSerializerInputFormatter(new MvcOptions()));
                options.OutputFormatters.Add(new XmlSerializerOutputFormatter());
                options.FormatterMappings.SetMediaTypeMappingForFormat("xml", "application/xml");
            });
            services.AddControllers();
            #region Health Checks
            services.AddHealthChecks();
            services.AddHealthChecksUI().AddInMemoryStorage();
            #endregion
            #region Identity Server Config
            IdentityServerSettings identityServerSettings = new IdentityServerSettings();
            Configuration.GetSection("IdentityServerSettings").Bind(identityServerSettings);
            services.AddAuthentication("Bearer")
            .AddIdentityServerAuthentication("Bearer", options =>
            {
                options.ApiName   = identityServerSettings.ApiName;
                options.Authority = identityServerSettings.Authority;
            });
            #endregion
            #region Swagger Config
            SwaggerGenSettings swaggerGenSettings = new SwaggerGenSettings();
            Configuration.GetSection("SwaggerGenSettings").Bind(swaggerGenSettings);
            services.AddSwaggerGen(options =>
            {
                options.SwaggerDoc(swaggerGenSettings.SwaggerDoc.name, swaggerGenSettings.SwaggerDoc.OpenApiInfo);
                SecurityDefinition securityDefinition = swaggerGenSettings.SecurityDefinition;
                Settings.Swagger.AuthorizationCode authorizationCode = securityDefinition.OpenApiSecurityScheme.AuthorizationCode;
                options.AddSecurityDefinition(securityDefinition.name, new OpenApiSecurityScheme
                {
                    Type  = securityDefinition.OpenApiSecurityScheme.SecuritySchemeType,
                    Flows = new OpenApiOAuthFlows
                    {
                        AuthorizationCode = new OpenApiOAuthFlow
                        {
                            AuthorizationUrl = new Uri(authorizationCode.AuthorizationUrl),
                            TokenUrl         = new Uri(authorizationCode.TokenUrl),
                            Scopes           = authorizationCode.Scopes
                        }
                    }
                });
                options.OperationFilter <AuthorizeCheckOperationFilter>();
            });
            #endregion
            #region Autofac Composition root
            // Install the container, using our configuration
            ContainerInstaller installer = new ContainerInstaller();
            ContainerBuilder   builder   = installer.Install();

            // Pull the .net core dependencies into the container, like controllers
            builder.Populate(services);

            IContainer container = builder.Build();
            #endregion
            // return the IServiceProvider implementation
            return(new AutofacServiceProvider(container));
        }
示例#2
0
 public static IServiceCollection AddDefaultSwaggerService(this IServiceCollection serviceDescriptors, SwaggerGenSettings swaggerGenSettings, Assembly?executingAssembly = null) =>
 serviceDescriptors.AddSwaggerGen(c => {