//using Autofac; //using Autofac.Extensions.DependencyInjection; //using IRaCIS.Core.API; //using IRaCIS.Core.Application.Filter; //using IRaCIS.Core.Application.MediatR.Handlers; //using LogDashboard; //using MassTransit; //using MassTransit.NewIdProviders; //using MediatR; //using Microsoft.AspNetCore.Builder; //using Microsoft.AspNetCore.Http.Features; //using Microsoft.AspNetCore.HttpOverrides; //using Microsoft.AspNetCore.SignalR; //using Microsoft.Extensions.Configuration; //using Microsoft.Extensions.DependencyInjection; //using Microsoft.Extensions.Hosting; //using Serilog; //using System; //var builder = WebApplication.CreateBuilder(args); // //以配置文件为准,否则 从url中取环境值(服务以命令行传递参数启动,配置文件配置了就不需要传递环境参数) // var config = new ConfigurationBuilder() // .AddEnvironmentVariables() // .Build(); // var enviromentName = config["ASPNETCORE_ENVIRONMENT"]; // if (string.IsNullOrWhiteSpace(enviromentName)) // { // var index = Array.IndexOf(args, "--env"); // enviromentName = index > -1 // ? args[index + 1] // : "Development"; // } // NewId.SetProcessIdProvider(new CurrentProcessIdProvider()); //builder.Host.UseServiceProviderFactory(new AutofacServiceProviderFactory()) // .ConfigureContainer(containerBuilder => // { // containerBuilder.RegisterModule(); // }) // .UseWindowsService().UseSerilog(); //// Add services to the container. ////本地化 //builder.Services.AddJsonLocalization(options => options.ResourcesPath = "Resources"); //// 异常、参数统一验证过滤器、Json序列化配置、字符串参数绑型统一Trim() //builder.Services.AddControllers(options => //{ // //options.Filters.Add(); // options.Filters.Add(); // options.Filters.Add(); // //options.Filters.Add(); // //if (_configuration.GetSection("BasicSystemConfig").GetValue("OpenLoginLimit")) // //{ // // options.Filters.Add(); // //} //}).AddNewtonsoftJsonSetup(); // NewtonsoftJson 序列化 处理 ////动态WebApi + UnifiedApiResultFilter 省掉控制器代码 //builder.Services.AddDynamicWebApiSetup(); ////AutoMapper //builder.Services.AddAutoMapperSetup(); ////EF ORM QueryWithNoLock //builder.Services.AddEFSetup(builder.Configuration); ////Http 响应压缩 //builder.Services.AddResponseCompressionSetup(); ////Swagger Api 文档 //builder.Services.AddSwaggerSetup(); ////JWT Token 验证 //builder.Services.AddJWTAuthSetup(builder.Configuration); //// MediatR 进程内消息 事件解耦 从程序集中 注册命令和handler对应关系 //builder.Services.AddMediatR(typeof(ConsistencyVerificationHandler).Assembly); //// EasyCaching 缓存 //builder.Services.AddEasyCachingSetup(); ////services.AddDistributedMemoryCache(); ////// hangfire 定时任务框架 有界面,更友好~ //builder.Services.AddhangfireSetup(builder.Configuration); ////// QuartZ 定时任务框架 使用了hangfire 暂时不用,后续需要可以打开,已经配好 ////builder.Services.AddQuartZSetup(_configuration); //// 保护上传文件 ////services.AddStaticFileAuthorizationSetup(); //////HttpReports 暂时废弃 ////services.AddHttpReports().AddHttpTransport(); ////Serilog 日志可视化 LogDashboard日志 //builder.Services.AddLogDashboardSetup(); ////上传限制 配置 //builder.Services.Configure(options => //{ // options.MultipartBodyLengthLimit = int.MaxValue; // options.ValueCountLimit = int.MaxValue; // options.ValueLengthLimit = int.MaxValue; //}); ////IP 限流 可设置白名单 或者黑名单 ////services.AddIpPolicyRateLimitSetup(_configuration); ////用户类型 策略授权 //builder.Services.AddAuthorizationPolicySetup(builder.Configuration); //builder.Services.AddJsonConfigSetup(builder.Configuration); ////转发头设置 获取真实IP //builder.Services.Configure(options => //{ // options.ForwardedHeaders = // ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto; //}); ////Dicom影像渲染图片 跨平台 //builder.Services.AddDicomSetup(); //// 实时应用 //builder.Services.AddSignalR(); //builder.Services.AddSingleton(); //builder.Services.AddControllers(); //// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle ////builder.Services.AddEndpointsApiExplorer(); ////builder.Services.AddSwaggerGen(); ////SerilogExtension.AddSerilogSetup(enviromentName, builder.Host.confi); //var app = builder.Build(); //// Configure the HTTP request pipeline. ////本地化 //app.UseLocalization(); //app.UseForwardedHeaders(); ////不需要 token 访问的静态文件 wwwroot css, JavaScript, and images don't require authentication. //app.UseStaticFiles(); //app.UseIRacisHostStaticFileStore(app.Environment); ////LogDashboard //app.UseLogDashboard("/LogDashboard"); ////hangfire ////app.UseHangfireConfig(app.Environment); //////暂时废弃 ////app.UseHttpReports(); //////限流 中间件 ////app.UseIpRateLimiting(); ////响应压缩 //app.UseResponseCompression(); //if (app.Environment.IsDevelopment()) //{ // app.UseDeveloperExceptionPage(); //} //else //{ // //app.UseHsts(); //} //SwaggerSetup.Configure(app, app.Environment); //Console.WriteLine("当前环境: " + builder.Environment.EnvironmentName); ////app.UseMiddleware(); //// 特殊异常处理 比如 404 //app.UseStatusCodePagesWithReExecute("/Error/{0}"); //////serilog 记录请求的用户信息 //app.UseSerilogConfig(app.Environment); //app.UseRouting(); //app.UseCors(t => t.AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader()); //app.UseAuthentication(); ////app.UseJwtBearerQueryString(); //app.UseAuthorization(); //////文件伺服 必须带Token 访问 //////app.UseIRacisHostStaticFileStore(env); ////app.UseEndpoints(endpoints => ////{ //// endpoints.MapControllers(); //// endpoints.MapHub("/UploadHub")/*.RequireCors(t=>t.WithOrigins(new string[] {"null"}).AllowAnyMethod().AllowAnyHeader().AllowCredentials())*/; ////}); //app.MapControllers(); //app.MapHub("/UploadHub")/*.RequireCors(t=>t.WithOrigins(new string[] {"null"}).AllowAnyMethod().AllowAnyHeader().AllowCredentials())*/; //app.Run(); //测试同步