using System.IO.Compression; using System.Linq; using Microsoft.AspNetCore.ResponseCompression; using StackExchange.Redis; using HardwarePerformance.Infrastructure.Services; var builder = WebApplication.CreateBuilder(args); // Add services to the container. builder.Services.AddControllers(); builder.Services.AddEndpointsApiExplorer(); builder.Services.AddSwaggerGen(); // 添加响应压缩服务 builder.Services.AddResponseCompression(options => { options.EnableForHttps = true; options.Providers.Add(); options.Providers.Add(); options.MimeTypes = ResponseCompressionDefaults.MimeTypes.Concat(new[] { "application/javascript", "application/json", "text/css", "text/html", "text/plain", "text/xml" }); }); // 配置压缩级别 builder.Services.Configure(options => { options.Level = CompressionLevel.Fastest; }); builder.Services.Configure(options => { options.Level = CompressionLevel.Fastest; }); // 配置Redis缓存 builder.Services.AddStackExchangeRedisCache(options => { options.Configuration = builder.Configuration.GetConnectionString("Redis") ?? "localhost:6379"; options.InstanceName = "HardwarePerformance:"; }); // 注册Redis缓存服务 builder.Services.AddSingleton(provider => { var configuration = provider.GetRequiredService(); var connectionString = configuration.GetConnectionString("Redis") ?? "localhost:6379"; return ConnectionMultiplexer.Connect(connectionString); }); builder.Services.AddScoped(); // 配置CORS builder.Services.AddCors(options => { options.AddPolicy("AllowAll", policy => { policy.AllowAnyOrigin() .AllowAnyMethod() .AllowAnyHeader(); }); }); var app = builder.Build(); // Configure the HTTP request pipeline. if (app.Environment.IsDevelopment()) { app.UseSwagger(); app.UseSwaggerUI(); } app.UseHttpsRedirection(); // 添加响应压缩中间件 app.UseResponseCompression(); app.UseCors("AllowAll"); app.UseAuthorization(); app.MapControllers(); app.Run();