|
|
using Autofac;
|
|
|
using Autofac.Extensions.DependencyInjection;
|
|
|
using zzz;
|
|
|
using zzz.Common;
|
|
|
using zzz.Common.LogHelper;
|
|
|
using zzz.Extensions;
|
|
|
using zzz.Extensions.Middlewares;
|
|
|
using zzz.Middlewares;
|
|
|
using zzz.Model.Entity;
|
|
|
using zzz.Repository;
|
|
|
using zzz.Services.Sys.TasksQzs;
|
|
|
using zzz.Tasks;
|
|
|
using SqlSugar;
|
|
|
using System.Reflection;
|
|
|
using Yitter.IdGenerator;
|
|
|
using zzz.Filter;
|
|
|
using Newtonsoft.Json;
|
|
|
using Newtonsoft.Json.Serialization;
|
|
|
using Newtonsoft.Json.Converters;
|
|
|
using zzz.Hubs;
|
|
|
|
|
|
var builder = WebApplication.CreateBuilder(args);
|
|
|
|
|
|
// 1、配置host与容器
|
|
|
builder.Host
|
|
|
.UseServiceProviderFactory(new AutofacServiceProviderFactory())
|
|
|
.ConfigureContainer<ContainerBuilder>(builder =>
|
|
|
{
|
|
|
builder.RegisterModule(new AutofacModuleRegister());
|
|
|
//builder.RegisterModule<AutofacPropertityModuleReg>();
|
|
|
})
|
|
|
.ConfigureLogging((hostingContext, builder) =>
|
|
|
{
|
|
|
builder.AddFilter("System", LogLevel.Error);
|
|
|
builder.AddFilter("Microsoft", LogLevel.Error);
|
|
|
builder.SetMinimumLevel(LogLevel.Error);
|
|
|
builder.AddLog4Net(Path.Combine(Directory.GetCurrentDirectory(), "Log4net.config"));
|
|
|
})
|
|
|
.ConfigureAppConfiguration((hostingContext, config) =>
|
|
|
{
|
|
|
config.Sources.Clear();
|
|
|
config.AddJsonFile("appsettings.json", optional: true, reloadOnChange: false);
|
|
|
})
|
|
|
;
|
|
|
|
|
|
// Add services to the container.
|
|
|
builder.Services.AddSingleton(new Appsettings(builder.Configuration));
|
|
|
builder.Services.AddSingleton(new LogLock(builder.Environment.ContentRootPath));
|
|
|
|
|
|
SqlsugarSetup.AddSqlsugarSetup(builder.Services);
|
|
|
|
|
|
//添加引用 Microsoft.AspNetCore.SignalR.Protocols.NewtonsoftJson
|
|
|
builder.Services.AddSignalR().AddNewtonsoftJsonProtocol();
|
|
|
|
|
|
//builder.Services.AddControllers();
|
|
|
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
|
|
|
//builder.Services.AddEndpointsApiExplorer();
|
|
|
//builder.Services.AddSwaggerGen(c =>
|
|
|
//{
|
|
|
// c.SwaggerDoc("v1", new Microsoft.OpenApi.Models.OpenApiInfo()
|
|
|
// {
|
|
|
// Title="后台Api文档", Version="1.0.0", Description="描述~~"
|
|
|
// });
|
|
|
// var bathPath = AppContext.BaseDirectory;
|
|
|
// var xmlPath = Path.Combine(bathPath, "zzz.Api.xml");
|
|
|
// c.IncludeXmlComments(xmlPath,true);
|
|
|
//});
|
|
|
builder.Services.AddSwaggerSetup();
|
|
|
builder.Services.AddSqlsugarSetup();
|
|
|
builder.Services.AddJobSetup();
|
|
|
builder.Services.AddAutoMapperSetup();
|
|
|
//builder.Services.AddMiniProfilerSetup();
|
|
|
|
|
|
// 设置雪花id的workerId,确保每个实例workerId都应不同
|
|
|
var workerId = (ushort)Appsettings.GetValue("SnowId: WorkerId").ObjToInt(1);
|
|
|
YitIdHelper.SetIdGenerator(new IdGeneratorOptions { WorkerId = workerId });
|
|
|
|
|
|
builder.Services.AddCors(options =>
|
|
|
{
|
|
|
options.AddPolicy("any", builder =>
|
|
|
{
|
|
|
//builder.AllowAnyOrigin() //允许任何来源的主机访问
|
|
|
builder
|
|
|
.WithOrigins("http://*.*.*.*")//.SetIsOriginAllowedToAllowWildcardSubdomains()//设置允许访问的域
|
|
|
.AllowAnyMethod()
|
|
|
.AllowAnyHeader()
|
|
|
.AllowCredentials();//
|
|
|
});
|
|
|
});
|
|
|
|
|
|
builder.Services.AddControllers(o =>
|
|
|
{
|
|
|
o.Filters.Add(typeof(GlobalExceptionsFilter));
|
|
|
//o.Conventions.Insert(0, new GlobalRouteAuthorizeConvention());
|
|
|
//路由前面加前缀
|
|
|
//o.Conventions.Insert(0, new GlobalRoutePrefixFilter(new RouteAttribute(RoutePrefix.Name)));
|
|
|
})
|
|
|
.AddNewtonsoftJson(options =>
|
|
|
{
|
|
|
options.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
|
|
|
options.SerializerSettings.ContractResolver = new DefaultContractResolver();
|
|
|
options.SerializerSettings.DateFormatString = "yyyy-MM-dd HH:mm:ss";
|
|
|
//options.SerializerSettings.NullValueHandling = NullValueHandling.Ignore;
|
|
|
options.SerializerSettings.DateTimeZoneHandling = DateTimeZoneHandling.Local;
|
|
|
options.SerializerSettings.Converters.Add(new StringEnumConverter());
|
|
|
});
|
|
|
builder.Services.AddEndpointsApiExplorer();
|
|
|
|
|
|
var app = builder.Build();
|
|
|
|
|
|
// Configure the HTTP request pipeline.
|
|
|
app.UseSwaggerMiddle();
|
|
|
//if (app.Environment.IsDevelopment())
|
|
|
//{
|
|
|
// app.UseSwaggerMiddle();
|
|
|
//}
|
|
|
|
|
|
app.UseMiddleware<RequRespLogMiddleware>();
|
|
|
app.UseMiddleware<SignalRSendMiddleware>();
|
|
|
|
|
|
app.UseRouting();
|
|
|
|
|
|
app.UseAuthorization();
|
|
|
//app.UseMiniProfilerMiddleware();
|
|
|
|
|
|
app.UseMiddleware<CorsMiddleware>();
|
|
|
//app.MapControllers();
|
|
|
app.UseEndpoints(endpoints =>
|
|
|
{
|
|
|
endpoints.MapControllerRoute(
|
|
|
name: "default",
|
|
|
pattern: "{controller=Home}/{action=Index}/{id?}");
|
|
|
|
|
|
endpoints.MapHub<ChatHub>("/api2/chatHub");
|
|
|
});
|
|
|
|
|
|
var scope = app.Services.GetRequiredService<IServiceScopeFactory>().CreateScope();
|
|
|
var sqlSugarRep = scope.ServiceProvider.GetRequiredService<ISqlSugarClient>();
|
|
|
//var tasksQzServices = scope.ServiceProvider.GetRequiredService<ITasksQzServices>();
|
|
|
var tasksRep = scope.ServiceProvider.GetRequiredService<IBaseRepository<TasksQz>>();
|
|
|
var schedulerCenter = scope.ServiceProvider.GetRequiredService<ISchedulerCenter>();
|
|
|
app.UseSeedDataMiddle(sqlSugarRep, builder.Environment.WebRootPath);
|
|
|
app.UseQuartzJobMiddleware(tasksRep, schedulerCenter);
|
|
|
|
|
|
app.Run(); |