服务端的TigerApi 框架,基于.NET6 2024 版本
Rodney Chen
2024-09-24 e3034dbd4d96e244af376ba36842edf1f732a76c
Tiger.Api/Startup.cs
@@ -14,7 +14,9 @@
using System.IO;
using System.Linq;
using System.Reflection;
using Tiger.Api.Controllers;
using Tiger.IBusiness;
using Tiger.IBusiness.Utility;
namespace Tiger.Api
{
@@ -26,6 +28,7 @@
        public Startup(IConfiguration configuration)
        {
            Configuration = configuration;
            //初始化 ApiConfig
            ApiConfig.InitConfig(configuration);
            //测试代码
@@ -53,11 +56,13 @@
        {
            //services.RegisterAssembly("Tiger.Service");
            //services.AddTransient(typeof(IBaseService<>), typeof(BaseService<>));
            services.AddControllers().AddNewtonsoftJson(opt =>
            services.AddControllersWithViews().AddNewtonsoftJson(opt =>
            {
                opt.SerializerSettings.ContractResolver = new Newtonsoft.Json.Serialization.DefaultContractResolver();
                opt.SerializerSettings.DateFormatString = "yyyy-MM-dd HH:mm:ss";
            });
            //services.AddControllers().AddApplicationPart(typeof(_WMSTestController).Assembly);
            services.AddControllers().AddExtraControllers();
            //配置跨域处理cors
            services.AddCors(options =>
@@ -73,7 +78,7 @@
            });
            services.AddSwaggerGen(c =>
            {
                c.SwaggerDoc(version, new OpenApiInfo { Title = "Share API", Version = version });
                c.SwaggerDoc(version, new OpenApiInfo { Title = "Tiger API", Version = version });
                var basePath = AppDomain.CurrentDomain.BaseDirectory;
                var xmlPath = Path.Combine(basePath, "Tiger.Api.xml");
                c.IncludeXmlComments(xmlPath);
@@ -108,19 +113,20 @@
            app.UseSwagger();
            app.UseSwaggerUI(c =>
            {
                c.SwaggerEndpoint($"/swagger/{version}/swagger.json", $"Share API {version}");
                c.SwaggerEndpoint($"/swagger/{version}/swagger.json", $"Tiger API {version}");
            });
            app.UseRouting();
            app.UseCors(anyAllowSpecificOrigins);//支持跨域:允许特定来源的主机访问
            //app.UseHttpsRedirection();
            app.UseStaticFiles();
            //app.UseAuthorization();
            app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllerRoute(name: "default", pattern: "{controller=Home}/{action=Index}/{id?}").RequireCors(anyAllowSpecificOrigins);
                endpoints.MapControllers().RequireCors(anyAllowSpecificOrigins);
                //endpoints.MapControllers();
            });
            ConsoleExt.Write($"Api Run as{((ApiConfig.IsDevVersion || ApiConfig.IsTestVersion) ? ((ApiConfig.IsDevVersion ? " Dev" : "") + (ApiConfig.IsTestVersion ? " Test" : "")) : " Release")} Edition", ConsoleColor.Cyan);
@@ -143,6 +149,7 @@
                    (BizConfig.Configuration[$"Databases:Main:ConnectionString"].Split(';').Any(q => q.Contains("port")) ? "," : "") +
                    BizConfig.Configuration[$"Databases:Main:ConnectionString"].Split(';').Where(q => q.Contains("Data Source") || q.Contains("DataSource") || q.Contains("database")).FirstOrDefault(), ConsoleColor.Cyan);
            }
            //初始化Business的AutoFacContainer
            DI.Resolve<IBiz>().SetContainer(AutoFacContainer.Instance);
            //开启Api监控总线
@@ -151,6 +158,8 @@
            DI.Resolve<IServicesBus>().StartServices(app.ApplicationServices.GetService<ISchedulerFactory>());
            //开启DB缓存自动更新
            DI.Resolve<IDbCacheBus>().StartAutoUpdate();
            //开启MQTT服务
            MQTTHelper.Start();
        }
        /// <summary>
@@ -159,14 +168,18 @@
        public void DeleteLogs()
        {
            DirectoryInfo di = new DirectoryInfo(AppDomain.CurrentDomain.BaseDirectory + "\\Logs");
            var logFiles = di.GetFiles("*.log", SearchOption.AllDirectories);
            foreach (var file in logFiles)
            if(di.Exists)
            {
                if ((DateTime.Now - file.LastWriteTime).TotalDays > 30)
                var logFiles = di.GetFiles("*.log", SearchOption.AllDirectories);
                foreach (var file in logFiles)
                {
                    file.Delete();
                    if ((DateTime.Now - file.LastWriteTime).TotalDays > 30)
                    {
                        file.Delete();
                    }
                }
            }
        }
    }//endClass
}