Files
XCool f25b0307db
Some checks failed
CI/CD Pipeline / 测试 (18.x) (push) Has been cancelled
CI/CD Pipeline / 测试 (20.x) (push) Has been cancelled
CI/CD Pipeline / 安全检查 (push) Has been cancelled
CI/CD Pipeline / 部署 (push) Has been cancelled
CI/CD Pipeline / 通知 (push) Has been cancelled
初始化
2025-11-03 19:47:36 +08:00

91 lines
2.2 KiB
C#

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<BrotliCompressionProvider>();
options.Providers.Add<GzipCompressionProvider>();
options.MimeTypes = ResponseCompressionDefaults.MimeTypes.Concat(new[]
{
"application/javascript",
"application/json",
"text/css",
"text/html",
"text/plain",
"text/xml"
});
});
// 配置压缩级别
builder.Services.Configure<BrotliCompressionProviderOptions>(options =>
{
options.Level = CompressionLevel.Fastest;
});
builder.Services.Configure<GzipCompressionProviderOptions>(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<IConnectionMultiplexer>(provider =>
{
var configuration = provider.GetRequiredService<IConfiguration>();
var connectionString = configuration.GetConnectionString("Redis") ?? "localhost:6379";
return ConnectionMultiplexer.Connect(connectionString);
});
builder.Services.AddScoped<IRedisCacheService, RedisCacheService>();
// 配置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();