chore: add documentation comments and stylecop rules

This commit is contained in:
2025-12-04 11:25:01 +08:00
parent 17d143a351
commit 8e4c2b0e45
142 changed files with 1309 additions and 439 deletions

View File

@@ -14,8 +14,8 @@ using System.Threading.RateLimiting;
const string CorsPolicyName = "GatewayCors";
// 1. 创建构建器并配置 Serilog
var builder = WebApplication.CreateBuilder(args);
builder.Host.UseSerilog((context, services, loggerConfiguration) =>
{
loggerConfiguration
@@ -24,9 +24,11 @@ builder.Host.UseSerilog((context, services, loggerConfiguration) =>
.Enrich.FromLogContext();
});
// 2. 配置 YARP 反向代理
builder.Services.AddReverseProxy()
.LoadFromConfig(builder.Configuration.GetSection("ReverseProxy"));
// 3. 转发头部配置
builder.Services.Configure<ForwardedHeadersOptions>(options =>
{
options.ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto;
@@ -34,6 +36,7 @@ builder.Services.Configure<ForwardedHeadersOptions>(options =>
options.KnownProxies.Clear();
});
// 4. 配置 CORS
builder.Services.AddCors(options =>
{
options.AddPolicy(CorsPolicyName, policy =>
@@ -44,6 +47,7 @@ builder.Services.AddCors(options =>
});
});
// 5. 配置网关限流
builder.Services.Configure<GatewayRateLimitOptions>(builder.Configuration.GetSection("Gateway:RateLimiting"));
var rateLimitOptions = builder.Configuration.GetSection("Gateway:RateLimiting").Get<GatewayRateLimitOptions>() ?? new();
@@ -66,6 +70,7 @@ if (rateLimitOptions.Enabled)
});
}
// 6. 配置 OpenTelemetry
var otelOptions = builder.Configuration.GetSection("OpenTelemetry").Get<GatewayOpenTelemetryOptions>() ?? new();
if (otelOptions.Enabled)
{
@@ -117,10 +122,13 @@ if (otelOptions.Enabled)
});
}
// 7. 构建应用
var app = builder.Build();
// 8. 转发头中间件
app.UseForwardedHeaders();
// 9. 全局异常处理中间件
app.UseExceptionHandler(errorApp =>
{
// 1. 捕获所有未处理异常并返回统一结构。
@@ -145,6 +153,7 @@ app.UseExceptionHandler(errorApp =>
});
});
// 10. 请求日志
app.UseSerilogRequestLogging(options =>
{
options.MessageTemplate = "网关请求 {RequestMethod} {RequestPath} => {StatusCode} 用时 {Elapsed:0.000} 秒";
@@ -156,6 +165,7 @@ app.UseSerilogRequestLogging(options =>
};
});
// 11. CORS 与限流
app.UseCors(CorsPolicyName);
if (rateLimitOptions.Enabled)
@@ -163,6 +173,7 @@ if (rateLimitOptions.Enabled)
app.UseRateLimiter();
}
// 12. 透传请求头并保证 Trace
app.Use(async (context, next) =>
{
// 1. 确保请求拥有可追踪的 ID。
@@ -187,6 +198,7 @@ app.Use(async (context, next) =>
await next(context);
});
// 13. 映射反向代理与健康接口
app.MapReverseProxy();
app.MapGet("/", () => Results.Json(new