AutoDispatching/AutoDispathingWork/Program.cs

78 lines
2.3 KiB
C#

using AutoDispathingWork;
using AutoDispathingWork.Utils;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Diagnostics;
using Npgsql;
using WorkerService1;
using WorkerService1.Dto.Configuration;
using WorkerService1.Services;
var builder = WebApplication.CreateBuilder(args);
builder.Services
.AddControllers();
builder.Services
.AddEndpointsApiExplorer();
var config = new ConfigurationManager()
.AddJsonFile("appsettings.json", false, true)
.Build();
builder.Services.AddCors(x =>
{
x.AddPolicy("AllowAllOrigin", builder =>
{
builder
.SetIsOriginAllowed(_ => true)
.AllowAnyMethod()
.AllowAnyHeader();
});
});
var connectionString = builder.Configuration.GetConnectionString("DefaultConnection");
builder.Services.AddDbContextPool<ApplicationDbContext>(x =>
{
var dataSourceBuilder = new NpgsqlDataSourceBuilder(connectionString);
// 启用动态 JSON 序列化
dataSourceBuilder.EnableDynamicJson();
var dataSource = dataSourceBuilder.Build();
x.UseNpgsql(dataSource)
.UseLoggerFactory(new LoggerFactory())
.LogTo(Console.WriteLine, LogLevel.Information);
x.ConfigureWarnings(warnings => warnings.Ignore(CoreEventId.ManyServiceProvidersCreatedWarning));
}
);
builder.Services.AddSwaggerGen();
builder.Services.AddSingleton<IConfiguration>(config);
builder.Services.Configure<ClientOptions>(config.GetSection("ClientOptions"));
builder.Services.AddTransient<HttpClientLogHandler>();
builder.Services.AddHttpClient("Default", client => { client.Timeout = TimeSpan.FromSeconds(30); })
.AddHttpMessageHandler<HttpClientLogHandler>();
builder.Services.AddMemoryCache();
builder.Services.AddLogging();
// builder.Services.AddMvcCore();
builder.Services.AddSingleton<SpiderServices>();
builder.Services.AddSingleton<SettingServices>();
builder.Services.AddSingleton<WechatRobot>();
// #if !DEBUG
builder.Services.AddHostedService<Worker>();
builder.Services.AddHostedService<CloseWorker>();
// #endif
var app = builder.Build();
StaticServiceProvider.SetServiceProvider(app.Services);
app.UseCors("AllowAllOrigin");
#if DEBUG
app.UseSwagger();
app.UseSwaggerUI();
app.Services.GetService<WechatRobot>();
#endif
app.UseDefaultFiles();
app.UseStaticFiles();
app.MapControllers();
app.Urls.Add("http://*:8080");
app.Run();