// This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { services.AddControllers(); services.AddSingleton <IServiceCollection>(services); services.AddSingleton <IConfiguration>(Configuration); services.AddHealthChecks() .AddProcessList() // .AddPerformanceCounter("Win32_PerfRawData_PerfOS_Memory") // .AddPerformanceCounter("Win32_PerfRawData_PerfOS_Memory", "AvailableMBytes") // .AddPerformanceCounter("Win32_PerfRawData_PerfOS_Memory", "PercentCommittedBytesInUse", "PercentCommittedBytesInUse_Base") .AddSystemInfoCheck() .AddWorkingSetCheckKB(700000); // //.AddCheck<SlowDependencyHealthCheck>("Slow", failureStatus: null, tags: new[] { "ready", }) // .SqlConnectionHealthCheck(Configuration["SentinelConnection"]) // .AddApiIsAlive(Configuration.GetSection("sentinel-ui-sts:ClientOptions"), "api/healthcheck/isalive") // .AddApiIsAlive(Configuration.GetSection("sentinel-api-member:ClientOptions"), "api/healthcheck/isalive") // .AddApiIsAlive(Configuration.GetSection("sentinel-api-product:ClientOptions"), "api/healthcheck/isalive") // .AddApiIsAlive(Configuration.GetSection("sentinel-api-comms:ClientOptions"), "api/healthcheck/isalive") // .AddMongoHealthCheck(Configuration["Mongodb:ConnectionString"]) // .AddRabbitMQHealthCheck(Configuration["RabbitMQConnection"]) // .AddRedisHealthCheck(Configuration["RedisConnection"]) // .AddDIHealthCheck(services); services.AddApplicationInsightsTelemetry("15ce6ddc-8d32-418e-9d5c-eed1cd7d6096"); services.AddApplicationInsightsKubernetesEnricher(); services.ConfigureJwtAuthService(Configuration); services.AddCors(o => o.AddPolicy("MyPolicy", builder => { builder.AllowAnyOrigin() .AllowAnyMethod() .AllowAnyHeader() .SetIsOriginAllowedToAllowWildcardSubdomains(); //.AllowCredentials(); })); services.AddApiVersioning(options => { options.ReportApiVersions = true; options.AssumeDefaultVersionWhenUnspecified = true; options.DefaultApiVersion = new ApiVersion(1, 0); options.ApiVersionReader = new HeaderApiVersionReader("api-version"); }); services.AddVersionedApiExplorer(options => { options.GroupNameFormat = "'v'VVV"; options.SubstituteApiVersionInUrl = true; }); services.AddTransient <IConfigureOptions <SwaggerGenOptions>, ConfigureSwaggerOptions>(); services.AddSwaggerGen(options => { options.OperationFilter <SwaggerDefaultValues>(); options.IncludeXmlComments(XmlCommentsFilePath); options.AddSecurityDefinition("BearerAuth", new OpenApiSecurityScheme { Description = "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"", Name = "Authorization", In = ParameterLocation.Header, Type = SecuritySchemeType.ApiKey, BearerFormat = "Bearer " }); }); services.AddSingleton <EasyNetQ.IBus>((ctx) => { return(RabbitHutch.CreateBus(Configuration["RabbitMQConnection"])); }); services.AddStackExchangeRedisCache(options => { options.Configuration = Configuration["RedisConnection"]; options.InstanceName = "ApiMember"; }); // services.AddHttpClient("run_with_try", options => // { // options.Timeout = new TimeSpan(0, 2, 0); // options.DefaultRequestHeaders.Add("OData-MaxVersion", "4.0"); // options.DefaultRequestHeaders.Add("OData-Version", "4.0"); // options.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); // }).ConfigurePrimaryHttpMessageHandler<CertMessageHandler>() // // ConfigurePrimaryHttpMessageHandler((ch) => // // { // // var handler = new HttpClientHandler(); // // handler.ClientCertificateOptions = ClientCertificateOption.Manual; // // handler.ClientCertificates.Add(HttpClientHelpers.GetCert()); // // return handler; // // }) // // .AddHttpMessageHandler() // // .AddHttpMessageHandler<OAuthTokenHandler>() // //.AddHttpMessageHandler(*) // .AddPolicyHandler(HttpClientHelpers.GetRetryPolicy()) // .AddPolicyHandler(HttpClientHelpers.GetCircuitBreakerPolicy()); services.AddHttpClient <HealthCheckReportDownloaderService>("HealthCheckReportDownloader", options => { // options.BaseAddress = new Uri(Configuration["CrmConnection:ServiceUrl"] + "api/data/v8.2/"); options.Timeout = new TimeSpan(0, 2, 0); options.DefaultRequestHeaders.Add("OData-MaxVersion", "4.0"); options.DefaultRequestHeaders.Add("OData-Version", "4.0"); options.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); options.DefaultRequestHeaders.AcceptEncoding.Add(new StringWithQualityHeaderValue("gzip")); }) .ConfigurePrimaryHttpMessageHandler((ch) => new HttpClientHandler() { AutomaticDecompression = System.Net.DecompressionMethods.GZip // ClientCertificateOptions = ClientCertificateOption.Manual; // ClientCertificates.Add(HttpClientHelpers.GetCert()); }) //.AddHttpMessageHandler() // .AddHttpMessageHandler<OAuthTokenHandler>() .AddPolicyHandler(HttpClientHelpers.GetRetryPolicy()) .AddPolicyHandler(HttpClientHelpers.GetCircuitBreakerPolicy()); services.AddAutoMapper(typeof(Startup).Assembly); }
public void ConfigureServices(IServiceCollection services) { services.AddControllers(); services.AddSingleton <IServiceCollection>(services); services.AddSingleton <IConfiguration>(Configuration); var healthcheckBuilder = services.AddHealthChecks() .AddProcessList() // .AddPerformanceCounter("Win32_PerfRawData_PerfOS_Memory") // .AddPerformanceCounter("Win32_PerfRawData_PerfOS_Memory", "AvailableMBytes") // .AddPerformanceCounter("Win32_PerfRawData_PerfOS_Memory", "PercentCommittedBytesInUse", "PercentCommittedBytesInUse_Base") .AddSystemInfoCheck() .AddWorkingSetCheckKB(250000) // .AddCheck<SlowDependencyHealthCheck>("Slow", failureStatus: null, tags: new[] { "ready", }) // .AddMongoHealthCheck(Configuration["Mongodb:ConnectionString"]) // .AddRabbitMQHealthCheck(Configuration["RabbitMQConnection"]) // .AddRedisHealthCheck(Configuration["RedisConnection"]) .AddDIHealthCheck(services); if (Environment.EnvironmentName != "dockertest") { // healthcheckBuilder.AddRabbitMQHealthCheckWithDiIBus(); } services.AddApplicationInsightsTelemetry("15ce6ddc-8d32-418e-9d5c-eed1cd7d6096"); services.AddApplicationInsightsKubernetesEnricher(); services.ConfigureJwtAuthService(Configuration); services.AddCors(o => o.AddPolicy("MyPolicy", builder => { builder.AllowAnyOrigin() .AllowAnyMethod() .AllowAnyHeader() .SetIsOriginAllowedToAllowWildcardSubdomains() .AllowCredentials(); })); services.AddApiVersioning(options => { options.ReportApiVersions = true; options.AssumeDefaultVersionWhenUnspecified = true; options.DefaultApiVersion = new ApiVersion(1, 0); options.ApiVersionReader = new HeaderApiVersionReader("api-version"); }); services.AddVersionedApiExplorer(options => { options.GroupNameFormat = "'v'VVV"; options.SubstituteApiVersionInUrl = true; }); services.AddTransient <IConfigureOptions <SwaggerGenOptions>, ConfigureSwaggerOptions>(); services.AddSwaggerGen(options => { options.OperationFilter <SwaggerDefaultValues>(); options.IncludeXmlComments(XmlCommentsFilePath); options.AddSecurityDefinition("BearerAuth", new OpenApiSecurityScheme { Description = "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"", Name = "Authorization", In = ParameterLocation.Header, Type = SecuritySchemeType.ApiKey, BearerFormat = "Bearer " }); }); services.AddHttpClient("run_with_try", options => { options.Timeout = new TimeSpan(0, 2, 0); options.DefaultRequestHeaders.Add("OData-MaxVersion", "4.0"); options.DefaultRequestHeaders.Add("OData-Version", "4.0"); options.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); }).ConfigurePrimaryHttpMessageHandler <CertMessageHandler>() // ConfigurePrimaryHttpMessageHandler((ch) => // { // var handler = new HttpClientHandler(); // handler.ClientCertificateOptions = ClientCertificateOption.Manual; // handler.ClientCertificates.Add(HttpClientHelpers.GetCert()); // return handler; // }) // .AddHttpMessageHandler() // .AddHttpMessageHandler<OAuthTokenHandler>() //.AddHttpMessageHandler(*) .AddPolicyHandler(HttpClientHelpers.GetRetryPolicy()) .AddPolicyHandler(HttpClientHelpers.GetCircuitBreakerPolicy()); }