/// <summary> /// Callled at runtime. /// </summary> /// <param name="services">collection service.</param> public virtual void ConfigureServices(IServiceCollection services) { services.AddCorrelate(); services.AddSwaggerGen(c => { c.SwaggerDoc("v1", new OpenApiInfo { Title = $"{this.ServiceName} API", Version = "v1" }); c.CustomSchemaIds(x => x.FullName); }); services.AddCloudFoundryActuators(this.Configuration, MediaTypeVersion.V2, ActuatorContext.ActuatorAndCloudFoundry); services.AddControllers().ConfigureApiBehaviorOptions(options => { options.InvalidModelStateResponseFactory = context => { var appException = new ApplicationException(context.ModelState.Values.SelectMany(v => v.Errors) .Select(modelError => new ErrorDetail(StatusCodes.Status400BadRequest.ToString(CultureInfo.InvariantCulture), modelError.ErrorMessage)) .ToList()) { StatusCode = StatusCodes.Status400BadRequest.ToString(CultureInfo.InvariantCulture) }; var response = new ObjectResult(new { appException.Id, appException.Errors, appException.StatusCode }); response.StatusCode = StatusCodes.Status400BadRequest; return(response); }; }); var transientPolicySettings = new TransientPolicySettings(Configuration); services.AddSingleton(transientPolicySettings); services.RegisterInstace <IHttpRestClient, HttpRestClient>(transientPolicySettings); services.AddHealthChecks(); services.AddCors(); this.ConfigureComponentServices(services); }
public override void ConfigureComponentServices(IServiceCollection services) { var transientPolicySettings = new TransientPolicySettings(base.Configuration); services.RegisterInstace <IProductService, ProductService>(transientPolicySettings); // Add health checks for external services. Dictionary <string, string> externalServices = new Dictionary <string, string>(); //Add external service name and URL externalServices.Add("ProductService", "http://localhost:59520"); services.RegisterHealthChecksForExternalUris(externalServices); }