You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

145 lines
4.8 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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();