public static void ConfigureServices(WebApplicationBuilder builder) { var services = builder.Services; services.AddCors(options => { options.AddPolicy("AllowAll", builder => { builder .AllowAnyMethod() .AllowAnyHeader() .SetIsOriginAllowed(_ => true) .AllowCredentials() .WithOrigins( "https://www.valour.gg", "http://www.valour.gg", "https://valour.gg", "http://valour.gg", "https://api.valour.gg", "http://api.valour.gg", "http://localhost:3000", "https://localhost:3000", "http://localhost:3001", "https://localhost:3001"); }); }); services.AddSignalR(); var mapConfig = new MapperConfiguration(x => { x.AddProfile(new MappingProfile()); }); IMapper mapper = mapConfig.CreateMapper(); services.AddSingleton(mapper); services.AddHttpClient(); MappingManager.Mapper = mapper; services.AddDbContextPool <ValourDB>(options => { options.UseMySql(ValourDB.ConnectionString, ServerVersion.Parse("8.0.20-mysql"), options => options.EnableRetryOnFailure()); }); // This probably needs to be customized further but the documentation changed services.AddAuthentication().AddCookie(CookieAuthenticationDefaults.AuthenticationScheme); // Adds user manager to dependency injection services.AddScoped <UserManager>(); IdManager idManager = new(); services.AddSingleton(idManager); services.AddSingleton <WebPushClient>(); services.AddControllersWithViews().AddJsonOptions(options => { options.JsonSerializerOptions.DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull; //options.JsonSerializerOptions.PropertyNameCaseInsensitive = false; options.JsonSerializerOptions.ReferenceHandler = ReferenceHandler.IgnoreCycles; options.JsonSerializerOptions.PropertyNamingPolicy = null; } ); services.AddRazorPages(); services.AddHostedService <MessageCacheWorker>(); services.AddHostedService <PlanetMessageWorker>(); services.AddHostedService <StatWorker>(); services.AddEndpointsApiExplorer(); services.AddSwaggerGen(c => { c.SwaggerDoc("v1", new OpenApiInfo { Title = "Valour API", Description = "The official Valour API", Version = "v1.0" }); c.AddSecurityDefinition("Token", new OpenApiSecurityScheme() { Description = "The token used for authorizing your account.", In = ParameterLocation.Header, Type = SecuritySchemeType.ApiKey, Scheme = "Token" }); }); }