using Furion; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Server.Kestrel.Core; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.FileProviders; using Microsoft.Extensions.Hosting; using Serilog; using SqlSugar; using System.Text.Json.Serialization; using IStation.Application; namespace IStation.WebApi { /// /// /// [AppStartup(10)] public class Startup : AppStartup { /// /// /// public void ConfigureServices(IServiceCollection services) { services.AddConfigurableOptions(); services.Configure(options => { options.Limits.MaxRequestBodySize = int.MaxValue; }); services.Configure(options => { options.MaxRequestBodySize = int.MaxValue; }); if (Settings.WebApi.EnableJwt) { services.AddJwt(enableGlobalAuthorize: true); } services.AddCorsAccessor(); services.AddControllers().AddInjectWithUnifyResult(); services.AddSwaggerGen(c => { c.UseInlineDefinitionsForEnums(); }).AddMiniProfiler(); services.AddJsonOptions(options => { //返回属性大小写问题 options.JsonSerializerOptions.PropertyNamingPolicy = null; //返回时间格式 options.JsonSerializerOptions.Converters.Add(new DateTimeJsonConverter()); options.JsonSerializerOptions.Converters.Add(new DateTimeNullableJsonConverter()); options.JsonSerializerOptions.Converters.Add(new LongJsonConverter()); //忽略循环引用 options.JsonSerializerOptions.ReferenceHandler = ReferenceHandler.IgnoreCycles; // 仅.NET 6支持 }); // 添加即时通讯 services.AddSignalR(); SnowFlakeSingle.WorkId = Settings.SqlSugar.SnowFlakeWorkId; } /// /// /// public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } else { app.UseHsts(); } // 添加规范化结果状态码,需要在这里注册 app.UseUnifyResultStatusCodes(); app.UseHttpsRedirection(); #region 开放 data 文件夹(可以通过url访问文件) //app.UseStaticFiles(); string path = AppContext.BaseDirectory; path = Path.Combine(path, Settings.File.DataFolder); if (!Directory.Exists(path)) { Directory.CreateDirectory(path); } //通过url访问文件 app.UseStaticFiles(new StaticFileOptions()//自定义自己的文件路径 { RequestPath = new PathString("/Data"),//对外的访问路径 FileProvider = new PhysicalFileProvider(path)//指定实际物理路径 }); #endregion // Serilog请求日志中间件---必须在 UseStaticFiles 和 UseRouting 之间 //app.UseSerilogRequestLogging(); app.UseRouting(); app.UseCorsAccessor(); app.UseAuthentication(); app.UseAuthorization(); app.UseInject(string.Empty); app.UseEndpoints(endpoints => { // 注册集线器 endpoints.MapHub("/hubs/chathub"); endpoints.MapControllerRoute( name: "default", pattern: "{controller=Home}/{action=Index}/{id?}"); }); } } }