// This method gets called by the runtime. Use this method to configure the HTTP request pipeline. public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILogger <Startup> logger) { app.UseForwardedHeaders(new ForwardedHeadersOptions { ForwardedHeaders = ForwardedHeaders.XForwardedProto }); // Enable middleware to serve generated Swagger as a JSON endpoint. app.UseSwagger(); // Enable middleware to serve swagger-ui (HTML, JS, CSS, etc.), // specifying the Swagger JSON endpoint. app.UseSwaggerUI(c => { c.SwaggerEndpoint("/swagger/" + apiVersion + "/swagger.json", "Luna Dashboard API"); }); if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } else { app.UseExceptionHandler("/Home/Error"); // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts. app.UseHsts(); } app.UseHttpsRedirection(); app.UseStaticFiles(); app.UseCookiePolicy(); app.UseAuthentication(); app.UseCors( options => options .AllowAnyOrigin() .AllowAnyMethod() .AllowAnyHeader() ); app.UseExceptionHandler(x => { x.Run(async context => { context.Response.ContentType = "application/json"; var ex = context.Features.Get <IExceptionHandlerFeature>(); if (ex != null) { if (ex.Error.GetType().Name.Equals(nameof(LunaUserException)) || ex.Error.GetType().BaseType.Name.Equals(nameof(LunaUserException))) { context.Response.StatusCode = (int)((LunaUserException)ex.Error).HttpStatusCode; } else { context.Response.StatusCode = (int)HttpStatusCode.InternalServerError; } string errorMessage = new ErrorModel(ex.Error).ToJson(); logger.LogError(ex.Error, ExceptionUtils.GetFormattedDetails(ex.Error)); await context.Response.WriteAsync(errorMessage).ConfigureAwait(false); } }); }); app.UseRouting(); app.UseAuthorization(); app.UseEndpoints(endpoints => { endpoints.MapRazorPages(); endpoints.MapControllerRoute(name: "default", pattern: "api/{route}"); }); }