70 lines
1.9 KiB
C#
70 lines
1.9 KiB
C#
using Microsoft.AspNetCore.HostFiltering;
|
||
using Microsoft.AspNetCore.HttpOverrides;
|
||
using Microsoft.Extensions.Options;
|
||
using Scalar.AspNetCore;
|
||
using Serilog;
|
||
using StopShopping.FileApi;
|
||
using StopShopping.FileApi.Extensions;
|
||
using StopShopping.FileApi.Services;
|
||
|
||
// 将启动日志写入控制台,用于捕获启动时异常,启动后WriteTo被后续配置替代
|
||
Log.Logger = new LoggerConfiguration()
|
||
.WriteTo.Console()
|
||
.CreateBootstrapLogger();
|
||
|
||
try
|
||
{
|
||
var builder = WebApplication.CreateBuilder(args);
|
||
|
||
builder.Services.AddSerilog((services, seriLogger) =>
|
||
{
|
||
seriLogger.ReadFrom.Configuration(builder.Configuration)
|
||
.ReadFrom.Services(services);
|
||
});
|
||
|
||
builder.Services.AddOpenApi(options =>
|
||
{
|
||
options.AddSchemaTransformer<EnumOpenApiSchemaTransformer>();
|
||
});
|
||
builder.Services.AddProblemDetails();
|
||
builder.Services.AddServices(builder.Configuration.GetSection("AppOptions"));
|
||
/********************************************************************/
|
||
var app = builder.Build();
|
||
|
||
if (app.Environment.IsDevelopment())
|
||
{
|
||
app.MapOpenApi();
|
||
app.MapScalarApiReference();
|
||
}
|
||
|
||
if (!app.Environment.IsDevelopment())
|
||
{
|
||
app.UseHostFiltering();
|
||
|
||
var forwardedHeadersOptions = new ForwardedHeadersOptions
|
||
{
|
||
ForwardedHeaders = ForwardedHeaders.All,
|
||
};
|
||
var hostFilteringOptions = app.Services.GetRequiredService<IOptions<HostFilteringOptions>>();
|
||
if (null != hostFilteringOptions)
|
||
forwardedHeadersOptions.AllowedHosts = hostFilteringOptions.Value.AllowedHosts;
|
||
app.UseForwardedHeaders(forwardedHeadersOptions);
|
||
}
|
||
|
||
app.UseStaticFiles();
|
||
|
||
Routes.MapRoutes(app);
|
||
|
||
app.UseInternalOnlyAccess();
|
||
|
||
app.Run();
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
Log.Fatal(ex, "启动异常!");
|
||
}
|
||
finally
|
||
{
|
||
Log.CloseAndFlush();
|
||
}
|