64 lines
2.1 KiB
C#
64 lines
2.1 KiB
C#
using System.Reflection;
|
|
using BrokerApiServer;
|
|
using CommandLine;
|
|
using ControlCenter.NamedPipeHost.Extensions;
|
|
using ServerCore;
|
|
|
|
//=============================================================================
|
|
// 인자 설정
|
|
//=============================================================================
|
|
var port = 12000;
|
|
var use_swagger = false;
|
|
var parsed_arguments = Parser.Default.ParseArguments<CommandLineOption>(args);
|
|
if (parsed_arguments is Parsed<CommandLineOption> parsed)
|
|
{
|
|
port = parsed.Value.Port;
|
|
use_swagger = parsed.Value.UseSwagger ? true : false;
|
|
}
|
|
|
|
var cmd_options = new string[] { "--urls", $"http://*:{port}" };
|
|
|
|
var builder = WebApplication.CreateBuilder(cmd_options);
|
|
builder.addAppServices();
|
|
builder.Services.AddHttpContextAccessor();
|
|
builder.Services.AddEndpointsApiExplorer();
|
|
builder.Services.AddControllers(options => { options.Filters.Add(new ResultExceptionFilter()); });
|
|
builder.Services.AddHealthChecks();
|
|
builder.Services.AddSwaggerGen(SwaggerSettingHelper.setSwaggerGen);
|
|
|
|
var assemblies = new List<Assembly>(AppDomain.CurrentDomain.GetAssemblies());
|
|
builder.Services.AddNamedPipelineClientManager(assemblies, ServerControlCenter.ServerType.BrokerApi,
|
|
ServiceCategory.Caliverse.ToString(), NetworkHelper.getEthernetLocalIPv4(), port);
|
|
|
|
var app = builder.Build();
|
|
app.UseCors("Everything");
|
|
app.UseHttpsRedirection();
|
|
app.UseMiddleware<ResultLoggingMiddleware>();
|
|
app.UseAuthorization();
|
|
app.UseRouting();
|
|
app.MapControllers();
|
|
if (use_swagger)
|
|
{
|
|
app.UseSwagger();
|
|
app.UseSwaggerUI();
|
|
}
|
|
|
|
app.MapHealthChecks("/healthcheck");
|
|
|
|
app.validateRepoConnections();
|
|
app.brokerServerLogicInit();
|
|
|
|
// todo: 스키마 변경 시 자동으로 앱에서 마이그레이션 하지 않고, dotnet ef 툴을 사용할 것
|
|
// app.metadataMangerInit();
|
|
|
|
app.Services.GetRequiredService<IHostApplicationLifetime>().ApplicationStarted.Register(() =>
|
|
{
|
|
Log.getLogger().info($"Env : {app.Environment.EnvironmentName}");
|
|
Log.getLogger().info($"BrokerApiServer started {app.Urls}");
|
|
});
|
|
app.Services.GetRequiredService<IHostApplicationLifetime>().ApplicationStopped.Register(Log.shutdown);
|
|
|
|
app.UseNamedPipelineClientManager();
|
|
|
|
app.Run();
|