|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144 |
- using MoYu.DependencyInjection;
- using SafeCampus.Application.Manager.DeepelephManager;
- namespace SafeCampus.Web.Core;
-
- /// <summary>
- /// Web启动项配置
- /// </summary>
- [AppStartup(99)]
- public class Startup : AppStartup
- {
- public void ConfigureServices(IServiceCollection services)
- {
- //启动LoggingMonitor操作日志写入数据库组件
- services.AddComponent<LoggingMonitorComponent>();
-
- //认证组件
- services.AddComponent<AuthComponent>();
- //启动Web设置ConfigureServices组件
- services.AddComponent<WebSettingsComponent>();
- //gip压缩
- services.AddComponent<GzipCompressionComponent>();
- //定时任务
- //services.AddSchedule();
- //添加控制器相关
- services.AddControllers().AddNewtonsoftJson(options => //配置json
- {
- options.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();// 首字母小写(驼峰样式)
- options.SerializerSettings.DateFormatString = "yyyy-MM-dd HH:mm:ss";// 时间格式化
- options.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;// 忽略循环引用
- options.SerializerSettings.NullValueHandling = NullValueHandling.Ignore;// 忽略所有 null 属性
- }).AddInjectWithUnifyResult<SafeCampusResultProvider>()//配置统一返回模型
- ;
-
- //Nginx代理的话获取真实IP
- services.Configure<ForwardedHeadersOptions>(options =>
- {
- options.ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto;
- //新增如下两行
- options.KnownNetworks.Clear();
- options.KnownProxies.Clear();
- });
- services.AddRemoteRequest();
- services.AddSignalR();
- }
-
- public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
- {
- //var isDevelopment = App.HostEnvironment.IsDevelopment();
- //var isProduction = App.HostEnvironment.IsProduction();
- if (env.IsProduction())
- {
- //启动执行消息订阅
- Scoped.Create((_, scope) =>
- {
- var deepeleph = scope.ServiceProvider.GetRequiredService<IDeepelephManager>();
- deepeleph.SubscribeAlarm();
- //deepeleph.SubscribersRoomCall();
- deepeleph.SubscriberAttendance();
- });
- }
- //启动Web设置Configure组件
- app.UseComponent<WebSettingsApplicationComponent>(env);
-
- if (env.IsDevelopment())
- {
- app.UseDeveloperExceptionPage();
- }
- else
- {
- //启用gzip压缩
- app.UseResponseCompression();
- }
- // 启用HTTPS
- app.UseHttpsRedirection();
-
- // 添加状态码拦截中间件
- app.UseUnifyResultStatusCodes();
-
- app.UseStaticFiles();//静态文件访问配置
-
- //静态文件访问配置,暂时不开启
- // app.UseStaticFiles(new StaticFileOptions
- // {
- // ServeUnknownFileTypes = true,
- // FileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), "wwwroot")),//wwwroot相当于真实目录
- // OnPrepareResponse = c =>
- // {
- // c.Context.Response.Headers.Add("Access-Control-Allow-Origin", "*");
- // c.Context.Response.Headers.Append("Cache-Control", "public, max-age=604800");
- // },
- // RequestPath = new PathString("/files")//src相当于别名,为了安全
- // });
- app.UseRouting();//路由配置
- app.UseCorsAccessor();//跨域配置
- app.UseWebStatus();//网站开启状态
- app.UseAuthentication();//认证
- app.UseAuthorization();//授权
- app.UseInject(string.Empty);
- app.UseForwardedHeaders();//Nginx代理的话获取真实IP
- app.UseEndpoints(endpoints =>
- {
- // 注册集线器
- endpoints.MapHubs();
-
- endpoints.MapControllers();
- });
- var path = Path.Combine(Directory.GetCurrentDirectory(), "Files");
- if (!Directory.Exists(path))
- {
- Directory.CreateDirectory(path);
- }
- var alarmImg = Path.Combine(Directory.GetCurrentDirectory(), "Files","alarmImg");
- if (!Directory.Exists(alarmImg))
- {
- Directory.CreateDirectory(alarmImg);
- }
- var personImg = Path.Combine(Directory.GetCurrentDirectory(), "Files", "personImg");
- if (!Directory.Exists(personImg))
- {
- Directory.CreateDirectory(personImg);
- }
- var roomCallImg = Path.Combine(Directory.GetCurrentDirectory(), "Files", "roomCallImg");
- if (!Directory.Exists(roomCallImg))
- {
- Directory.CreateDirectory(roomCallImg);
- }
- var attendanceImg = Path.Combine(Directory.GetCurrentDirectory(), "Files", "attendanceImg");
- if (!Directory.Exists(attendanceImg))
- {
- Directory.CreateDirectory(attendanceImg);
- }
- var cameraImg = Path.Combine(Directory.GetCurrentDirectory(), "Files", "cameraImg");
- if (!Directory.Exists(cameraImg))
- {
- Directory.CreateDirectory(cameraImg);
- }
- app.UseFileServer(new FileServerOptions()
- {
- FileProvider = new PhysicalFileProvider(path),
- RequestPath = new PathString("/Files"),
- EnableDirectoryBrowsing = true
- });
- }
- }
|