chore: add documentation comments and stylecop rules
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user