// This method gets called by the runtime. Use this method to add services to the container. public void ConfigureContainer(ServiceRegistry services) { services.AddDefaultCorrelationId(); services.AddHttpContextAccessor(); services.AddMvc(); services.AddVersionedApiExplorer(options => options.GroupNameFormat = "'v'VVV"); services.AddApiVersioning(o => { o.ReportApiVersions = true; o.DefaultApiVersion = new ApiVersion(1, 0); o.AssumeDefaultVersionWhenUnspecified = true; }); services.AddOptions(); services.AddHttpClient(string.Empty) .AddCorrelationIdForwarding(); services.AddSwagger(); services.AddHealthChecks().AddCheck <ReadinessCheck>("PROJECT_NAME readiness", tags: new[] { "readiness" }); services.AddCustomizedLogging(); services.AddDependencyInjection(Configuration); services.AddHealthChecks(); services.AddControllers() .AddJsonOptions(options => options.JsonSerializerOptions.Converters.Add(new JsonStringEnumConverter())); }
// This method gets called by the runtime. Use this method to add services to the container. public void ConfigureContainer(ServiceRegistry services) { services.AddCorrelationId(); services.AddHttpContextAccessor(); services.AddMvc(); services.AddVersionedApiExplorer(options => options.GroupNameFormat = "'v'VVV"); services.AddApiVersioning(o => { o.ReportApiVersions = true; o.DefaultApiVersion = new ApiVersion(1, 0); o.AssumeDefaultVersionWhenUnspecified = true; }); services.AddOptions(); services.AddHttpClient(); services.AddSwagger(Configuration); services.AddDependencyInjection(Configuration); services.AddControllers(); services.AddHealthChecks(); services.AddSwaggerGen(c => { // This coupled with the properties in the csproj allow the swagger page to show additional comments for methods var xmlFile = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml"; var xmlPath = Path.Combine(AppContext.BaseDirectory, xmlFile); c.IncludeXmlComments(xmlPath); }); }
public static void Register(ServiceRegistry services, IConfiguration configuration) { services.Configure <ConfigModel>(configuration); services.AddHttpContextAccessor(); services.AddAuthorization(options => { options.AddPolicy("RequireAdminRole", policy => policy.RequireRole("Admin")); options.AddPolicy("RequireStandardRole", policy => policy.RequireRole("Standard")); options.AddPolicy("RequireDealerRole", policy => policy.RequireRole("Dealer")); options.AddPolicy("RequireCustomerRole", policy => policy.RequireRole("Customer")); options.AddPolicy("RequireDashboardUser", policy => policy.RequireClaim(ClaimType.CurrentUserRole, "Admin", "Dealer", "Standard")); }); services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme) .AddJwtBearer(options => { var signingKey = Convert.FromBase64String(configuration["Jwt:SigningSecret"]); var validIssuer = configuration["Jwt:ValidIssuer"]; var validAudience = configuration["Jwt:ValidAudience"]; options.TokenValidationParameters = new TokenValidationParameters { ValidateIssuer = true, ValidIssuer = validIssuer, ValidateAudience = true, ValidAudience = validAudience, ValidateIssuerSigningKey = true, IssuerSigningKey = new SymmetricSecurityKey(signingKey), ClockSkew = TimeSpan.Zero, //dotnet gives 5-10 more minuts if ClockSkew is not set }; }); services.AddDefaultAWSOptions(configuration.GetAWSOptions()); services.AddAWSService <IAmazonSimpleEmailService>(); var mappingConfig = new MapperConfiguration(mc => { mc.AddProfile(new AutoMapperProfiles()); }); IMapper mapper = mappingConfig.CreateMapper(); services.AddSingleton(mapper); services.AddSwaggerDocumentation(); }