AutoDispatching/AutoDispathingWork/Program.cs
2024-08-10 23:43:46 +08:00

76 lines
2.3 KiB
C#

using AutoDispathingWork.Utils;
using LiteDB;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Diagnostics;
using Microsoft.Extensions.FileProviders;
using Microsoft.OpenApi.Models;
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.AddDbContext<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<LiteDatabase>(x => new LiteDatabase(builder.Configuration["Database:ConnectionString"]));
builder.Services.AddSingleton<IConfiguration>(config);
builder.Services.Configure<ClientOptions>(config.GetSection("ClientOptions"));
builder.Services.AddHttpClient();
builder.Services.AddMemoryCache();
builder.Services.AddLogging();
// builder.Services.AddMvcCore();
builder.Services.AddSingleton<SpiderServices>();
builder.Services.AddScoped<SettingServices>();
// #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();
#endif
app.UseDefaultFiles();
app.UseStaticFiles();
app.MapControllers();
app.Urls.Add("http://*:8080");
app.Run();