diff --git a/src/FacadeCompanyName.FacadeProjectName.Application/FacadeCompanyName.FacadeProjectName.Application.csproj b/src/FacadeCompanyName.FacadeProjectName.Application/FacadeCompanyName.FacadeProjectName.Application.csproj index 7fe993d..ba92779 100644 --- a/src/FacadeCompanyName.FacadeProjectName.Application/FacadeCompanyName.FacadeProjectName.Application.csproj +++ b/src/FacadeCompanyName.FacadeProjectName.Application/FacadeCompanyName.FacadeProjectName.Application.csproj @@ -3,7 +3,7 @@ - net7.0 + net8.0 $(AssetTargetFallback);portable-net45+win8+wp8+wpa81; FacadeCompanyName.FacadeProjectName.Application FacadeCompanyName.FacadeProjectName.Application diff --git a/src/FacadeCompanyName.FacadeProjectName.DomainService.Share/FacadeCompanyName.FacadeProjectName.DomainService.Share.csproj b/src/FacadeCompanyName.FacadeProjectName.DomainService.Share/FacadeCompanyName.FacadeProjectName.DomainService.Share.csproj index c160dc7..39c14e1 100644 --- a/src/FacadeCompanyName.FacadeProjectName.DomainService.Share/FacadeCompanyName.FacadeProjectName.DomainService.Share.csproj +++ b/src/FacadeCompanyName.FacadeProjectName.DomainService.Share/FacadeCompanyName.FacadeProjectName.DomainService.Share.csproj @@ -3,7 +3,7 @@ - net7.0 + net8.0 $(AssetTargetFallback);portable-net45+win8+wp8+wpa81; FacadeCompanyName.FacadeProjectName.DomainService.Share FacadeCompanyName.FacadeProjectName.DomainService.Share @@ -13,8 +13,8 @@ - - + + diff --git a/src/FacadeCompanyName.FacadeProjectName.DomainService.Share/FacadeConfiguration.cs b/src/FacadeCompanyName.FacadeProjectName.DomainService.Share/FacadeConfiguration.cs index 60c904d..26b7668 100644 --- a/src/FacadeCompanyName.FacadeProjectName.DomainService.Share/FacadeConfiguration.cs +++ b/src/FacadeCompanyName.FacadeProjectName.DomainService.Share/FacadeConfiguration.cs @@ -3,5 +3,8 @@ public class FacadeConfiguration : IFacadeConfiguration { public string AppName { get; set; } + public string AppRootPath { get; set; } + public string AppEnvName { get; set; } + public bool IsDevelopment { get; set; } } } diff --git a/src/FacadeCompanyName.FacadeProjectName.DomainService.Share/IFacadeConfiguration.cs b/src/FacadeCompanyName.FacadeProjectName.DomainService.Share/IFacadeConfiguration.cs index dbf8af8..9d480ab 100644 --- a/src/FacadeCompanyName.FacadeProjectName.DomainService.Share/IFacadeConfiguration.cs +++ b/src/FacadeCompanyName.FacadeProjectName.DomainService.Share/IFacadeConfiguration.cs @@ -2,7 +2,15 @@ { public interface IFacadeConfiguration { - string AppName { get; } - + string AppName { get; } + string AppRootPath { get; } + /// + /// app running env name. + /// + string AppEnvName { get; } + /// + /// is local development + /// + bool IsDevelopment { get; } } } diff --git a/src/FacadeCompanyName.FacadeProjectName.DomainService/BackgroundWorkers/ClearLoggerWorker.cs b/src/FacadeCompanyName.FacadeProjectName.DomainService/BackgroundWorkers/ClearLoggerWorker.cs new file mode 100644 index 0000000..8014f34 --- /dev/null +++ b/src/FacadeCompanyName.FacadeProjectName.DomainService/BackgroundWorkers/ClearLoggerWorker.cs @@ -0,0 +1,39 @@ +using Abp.Dependency; +using Abp.Threading.Timers; +using Abp.Timing; +using FacadeCompanyName.FacadeProjectName.DomainService.Share; +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FacadeCompanyName.FacadeProjectName.DomainService.BackgroundWorkers +{ + public class ClearLoggerWorker: FacadeProjectNameBackgroundWorkerBase, ISingletonDependency + { + private readonly IFacadeConfiguration _facadeConfiguration; + public ClearLoggerWorker(AbpAsyncTimer timer, IFacadeConfiguration facadeConfiguration) + : base(timer) + { + timer.Period = 1000 * 60 * 60; + _facadeConfiguration = facadeConfiguration; + } + protected override async Task DoWorkAsync() + { + var rootPath = _facadeConfiguration.AppRootPath; + var logsPath = Path.Combine(rootPath, "App_Data", "Logs"); + if (Directory.Exists(logsPath)) + { + var lastMonth = Clock.Now.Subtract(TimeSpan.FromDays(90)); + var path1 = Path.Combine(logsPath, lastMonth.ToString("yyyy"), lastMonth.ToString("MM")); + if (Directory.Exists(path1)) + { + Directory.Delete(path1, true); + } + } + await Task.CompletedTask; + } + } +} diff --git a/src/FacadeCompanyName.FacadeProjectName.DomainService/BackgroundWorkers/DemoWorker.cs b/src/FacadeCompanyName.FacadeProjectName.DomainService/BackgroundWorkers/DemoWorker.cs deleted file mode 100644 index cb6556f..0000000 --- a/src/FacadeCompanyName.FacadeProjectName.DomainService/BackgroundWorkers/DemoWorker.cs +++ /dev/null @@ -1,25 +0,0 @@ -using Abp.Dependency; -using Abp.Threading.Timers; -using FacadeCompanyName.FacadeProjectName.DomainService.Share; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace FacadeCompanyName.FacadeProjectName.DomainService.BackgroundWorkers -{ - public class DemoWorker: FacadeProjectNameBackgroundWorkerBase, ISingletonDependency - { - public DemoWorker(AbpAsyncTimer timer) - : base(timer) - { - } - protected override async Task DoWorkAsync() - { - // TODO - Logger.Info("this is a demo worker."); - await Task.CompletedTask; - } - } -} diff --git a/src/FacadeCompanyName.FacadeProjectName.DomainService/FacadeCompanyName.FacadeProjectName.DomainService.csproj b/src/FacadeCompanyName.FacadeProjectName.DomainService/FacadeCompanyName.FacadeProjectName.DomainService.csproj index 16f1d98..15e8c3c 100644 --- a/src/FacadeCompanyName.FacadeProjectName.DomainService/FacadeCompanyName.FacadeProjectName.DomainService.csproj +++ b/src/FacadeCompanyName.FacadeProjectName.DomainService/FacadeCompanyName.FacadeProjectName.DomainService.csproj @@ -3,7 +3,7 @@ - net7.0 + net8.0 $(AssetTargetFallback);portable-net45+win8+wp8+wpa81; FacadeCompanyName.FacadeProjectName.DomainService FacadeCompanyName.FacadeProjectName.DomainService @@ -27,8 +27,8 @@ - - + + diff --git a/src/FacadeCompanyName.FacadeProjectName.DomainService/FacadeProjectNameDomainServiceModule.cs b/src/FacadeCompanyName.FacadeProjectName.DomainService/FacadeProjectNameDomainServiceModule.cs index 6e40aca..e4049bc 100644 --- a/src/FacadeCompanyName.FacadeProjectName.DomainService/FacadeProjectNameDomainServiceModule.cs +++ b/src/FacadeCompanyName.FacadeProjectName.DomainService/FacadeProjectNameDomainServiceModule.cs @@ -42,7 +42,7 @@ public override void PostInitialize() if (Configuration.BackgroundJobs.IsJobExecutionEnabled) { //Worker DI. - //IocManager.Resolve().Add(IocManager.Resolve()); + IocManager.Resolve().Add(IocManager.Resolve()); } } } diff --git a/src/FacadeCompanyName.FacadeProjectName.Application/Folders/AppFolders.cs b/src/FacadeCompanyName.FacadeProjectName.DomainService/Folders/AppFolders.cs similarity index 100% rename from src/FacadeCompanyName.FacadeProjectName.Application/Folders/AppFolders.cs rename to src/FacadeCompanyName.FacadeProjectName.DomainService/Folders/AppFolders.cs diff --git a/src/FacadeCompanyName.FacadeProjectName.Application/Folders/IAppFolders.cs b/src/FacadeCompanyName.FacadeProjectName.DomainService/Folders/IAppFolders.cs similarity index 66% rename from src/FacadeCompanyName.FacadeProjectName.Application/Folders/IAppFolders.cs rename to src/FacadeCompanyName.FacadeProjectName.DomainService/Folders/IAppFolders.cs index 89f216b..0d4c72a 100644 --- a/src/FacadeCompanyName.FacadeProjectName.Application/Folders/IAppFolders.cs +++ b/src/FacadeCompanyName.FacadeProjectName.DomainService/Folders/IAppFolders.cs @@ -3,16 +3,16 @@ public interface IAppFolders { /// - /// 临时文件下载文件夹 /downloads/temps + /// 临时文件下载文件夹 /temps//downloads/ /// string TempFileDownloadFolder { get; } /// - /// 临时文件上传文件夹 /uploads/temps + /// 临时文件上传文件夹 /temps/uploads/ /// string TempFileUploadFolder { get; } /// - /// 文件上传后保存的路径 /uploads/ + /// 文件上传后保存的路径 /files/uploads/ /// string FileUploadFolder { get; } } diff --git a/src/FacadeCompanyName.FacadeProjectName.DomainService/Schedules/DemoSchedule.cs b/src/FacadeCompanyName.FacadeProjectName.DomainService/Schedules/DemoSchedule.cs index 4a67801..234896c 100644 --- a/src/FacadeCompanyName.FacadeProjectName.DomainService/Schedules/DemoSchedule.cs +++ b/src/FacadeCompanyName.FacadeProjectName.DomainService/Schedules/DemoSchedule.cs @@ -11,7 +11,7 @@ public DemoSchedule(ILogger logger) { _logger = logger; } - public override async Task Execute(IJobExecutionContext context) + public override async Task ExecuteJobAsync(IJobExecutionContext context) { _logger.Debug("DemoSchedule 执行了"); diff --git a/src/FacadeCompanyName.FacadeProjectName.DomainService/Schedules/ScheduleJobBase.cs b/src/FacadeCompanyName.FacadeProjectName.DomainService/Schedules/ScheduleJobBase.cs index fd544e1..4cec27c 100644 --- a/src/FacadeCompanyName.FacadeProjectName.DomainService/Schedules/ScheduleJobBase.cs +++ b/src/FacadeCompanyName.FacadeProjectName.DomainService/Schedules/ScheduleJobBase.cs @@ -1,4 +1,5 @@ using Abp.Quartz; +using Facade.Quartz; using FacadeCompanyName.FacadeProjectName.DomainService.Share; namespace FacadeCompanyName.FacadeProjectName.DomainService.Schedules @@ -6,7 +7,7 @@ namespace FacadeCompanyName.FacadeProjectName.DomainService.Schedules /// /// 任务调度作业 /// - public abstract class ScheduleJobBase : JobBase + public abstract class ScheduleJobBase : FacadeScheduleJobBase { protected ScheduleJobBase() : base() { diff --git a/src/FacadeCompanyName.FacadeProjectName.Oracle/FacadeCompanyName.FacadeProjectName.Oracle.csproj b/src/FacadeCompanyName.FacadeProjectName.Oracle/FacadeCompanyName.FacadeProjectName.Oracle.csproj index 7102b39..19ca0cc 100644 --- a/src/FacadeCompanyName.FacadeProjectName.Oracle/FacadeCompanyName.FacadeProjectName.Oracle.csproj +++ b/src/FacadeCompanyName.FacadeProjectName.Oracle/FacadeCompanyName.FacadeProjectName.Oracle.csproj @@ -3,7 +3,7 @@ - net7.0 + net8.0 $(AssetTargetFallback);portable-net45+win8+wp8+wpa81; true true diff --git a/src/FacadeCompanyName.FacadeProjectName.Web.Core/AspNetCore/FacadeProjectNameServiceCollectionExtensions.cs b/src/FacadeCompanyName.FacadeProjectName.Web.Core/AspNetCore/FacadeProjectNameServiceCollectionExtensions.cs index c3836f1..e1d556e 100644 --- a/src/FacadeCompanyName.FacadeProjectName.Web.Core/AspNetCore/FacadeProjectNameServiceCollectionExtensions.cs +++ b/src/FacadeCompanyName.FacadeProjectName.Web.Core/AspNetCore/FacadeProjectNameServiceCollectionExtensions.cs @@ -24,11 +24,7 @@ public static class FacadeProjectNameServiceCollectionExtensions /// public static void ConfigureFacadeProjectNameService(this IServiceCollection services, IConfigurationRoot appConfiguration) { - services.AddControllers().AddNewtonsoftJson(options => - { - options.OutputFormatterMemoryBufferThreshold = 1024 * 1024; - options.InputFormatterMemoryBufferThreshold = 1024 * 1024; - }); + services.AddControllers(); services.Configure(options => { diff --git a/src/FacadeCompanyName.FacadeProjectName.Web.Core/FacadeCompanyName.FacadeProjectName.Web.Core.csproj b/src/FacadeCompanyName.FacadeProjectName.Web.Core/FacadeCompanyName.FacadeProjectName.Web.Core.csproj index 0e5d52f..d4e9879 100644 --- a/src/FacadeCompanyName.FacadeProjectName.Web.Core/FacadeCompanyName.FacadeProjectName.Web.Core.csproj +++ b/src/FacadeCompanyName.FacadeProjectName.Web.Core/FacadeCompanyName.FacadeProjectName.Web.Core.csproj @@ -3,7 +3,7 @@ - net7.0 + net8.0 $(AssetTargetFallback);portable-net45+win8+wp8+wpa81; FacadeCompanyName.FacadeProjectName.Web.Core FacadeCompanyName.FacadeProjectName.Web.Core @@ -14,12 +14,12 @@ - - - - + + + + - + diff --git a/src/FacadeCompanyName.FacadeProjectName.Web.Core/FacadeProjectNameWebCoreModule.cs b/src/FacadeCompanyName.FacadeProjectName.Web.Core/FacadeProjectNameWebCoreModule.cs index e2fdc22..982c1db 100644 --- a/src/FacadeCompanyName.FacadeProjectName.Web.Core/FacadeProjectNameWebCoreModule.cs +++ b/src/FacadeCompanyName.FacadeProjectName.Web.Core/FacadeProjectNameWebCoreModule.cs @@ -44,6 +44,9 @@ public override void PreInitialize() IocManager.RegisterIfNot(Abp.Dependency.DependencyLifeStyle.Singleton); var facadeConfiguration = IocManager.Resolve(); _appConfiguration.GetSection("FacadeConfiguration").Bind(facadeConfiguration); + facadeConfiguration.AppRootPath = _env.ContentRootPath; + facadeConfiguration.IsDevelopment = _env.EnvironmentName.Equals("Development", StringComparison.OrdinalIgnoreCase); + facadeConfiguration.AppEnvName = _env.EnvironmentName; Configuration.Auditing.IsEnabled = false; Configuration.Auditing.IsEnabledForAnonymousUsers = true; @@ -52,6 +55,7 @@ public override void PreInitialize() Configuration.DefaultNameOrConnectionString = _appConfiguration.GetConnectionString(FacadeProjectNameConsts.ConnectionStringName); Configuration.UnitOfWork.Timeout = new TimeSpan(0, 0, 30); + Configuration.Localization.Languages.Clear(); Configuration.Localization.Languages.Add(new LanguageInfo("zh", "中文简体", isDefault: true)); Configuration.Localization.Languages.Add(new LanguageInfo("en", "English")); ConfigureTokenAuth(); diff --git a/src/FacadeCompanyName.FacadeProjectName.Web.Core/Filters/DebounceActionFilter.cs b/src/FacadeCompanyName.FacadeProjectName.Web.Core/Filters/DebounceActionFilter.cs index 7ebc13d..0f84279 100644 --- a/src/FacadeCompanyName.FacadeProjectName.Web.Core/Filters/DebounceActionFilter.cs +++ b/src/FacadeCompanyName.FacadeProjectName.Web.Core/Filters/DebounceActionFilter.cs @@ -70,16 +70,19 @@ public async Task OnActionExecutionAsync(ActionExecutingContext context, ActionE var requestParams = context.ActionArguments; #region 获取参数及token var sb = new StringBuilder(); + sb.Append(methodInfo.DeclaringType.FullName); + sb.Append(methodInfo.Name); sb.Append(request.Method); + sb.Append(request.Host.ToString()); + sb.Append(request.Path.ToString()); + sb.Append(request.Protocol); + //_logger.Debug($"Debounce-{methodInfo.DeclaringType.FullName}-{methodInfo.Name}:" + Environment.NewLine + sb.ToString()); + sb.Append(request.QueryString.ToString()); foreach (var kvp in requestParams) { sb.Append(kvp.Key).Append(kvp.Value.ToJsonString()); } - sb.Append(request.Host.ToString()); - sb.Append(request.Path.ToString()); - sb.Append(request.QueryString.ToString()); - sb.Append(request.Protocol); if (request.Headers.TryGetValue("Authorization", out var v)) { var token = v.ToString(); @@ -104,9 +107,8 @@ public async Task OnActionExecutionAsync(ActionExecutingContext context, ActionE { var obj = new ObjectResult(JsonSerializationHelper.DeserializeWithType(cacheValue)); context.Result = obj; - var d_type = context.ActionDescriptor.GetMethodInfo().DeclaringType; - var methodName = context.ActionDescriptor.GetMethodInfo().Name; - _logger.Debug($"Debounce-{d_type.FullName}-{methodName}:" + cacheKey); + //context.Result = new ObjectResult(new JsonResponse(false, "数据正在处理中,请稍后再试...")); + _logger.Debug($"Debounce-{methodInfo.DeclaringType.FullName}-{methodInfo.Name}:" + cacheKey); return; } } diff --git a/src/FacadeCompanyName.FacadeProjectName.Web.Host/FacadeCompanyName.FacadeProjectName.Web.Host.csproj b/src/FacadeCompanyName.FacadeProjectName.Web.Host/FacadeCompanyName.FacadeProjectName.Web.Host.csproj index b487ac6..18edfbb 100644 --- a/src/FacadeCompanyName.FacadeProjectName.Web.Host/FacadeCompanyName.FacadeProjectName.Web.Host.csproj +++ b/src/FacadeCompanyName.FacadeProjectName.Web.Host/FacadeCompanyName.FacadeProjectName.Web.Host.csproj @@ -3,7 +3,7 @@ - net7.0 + net8.0 $(AssetTargetFallback);portable-net45+win8+wp8+wpa81; true FacadeCompanyName.FacadeProjectName.Web.Host diff --git a/src/FacadeCompanyName.FacadeProjectName.Web.Host/Hubs/NewSignalRRealTimeNotifier.cs b/src/FacadeCompanyName.FacadeProjectName.Web.Host/Hubs/NewSignalRRealTimeNotifier.cs index 4cee439..d86ea88 100644 --- a/src/FacadeCompanyName.FacadeProjectName.Web.Host/Hubs/NewSignalRRealTimeNotifier.cs +++ b/src/FacadeCompanyName.FacadeProjectName.Web.Host/Hubs/NewSignalRRealTimeNotifier.cs @@ -41,7 +41,7 @@ public async Task SendNotificationsAsync(UserNotification[] userNotifications) { try { - var onlineClients = _onlineClientManager.GetAllByUserId(userNotification); + var onlineClients = await _onlineClientManager.GetAllByUserIdAsync(userNotification); foreach (var onlineClient in onlineClients) { var signalRClient = _hubContext.Clients.Client(onlineClient.ConnectionId); diff --git a/test/FacadeCompanyName.FacadeProjectName.Tests/FacadeCompanyName.FacadeProjectName.Tests.csproj b/test/FacadeCompanyName.FacadeProjectName.Tests/FacadeCompanyName.FacadeProjectName.Tests.csproj index 7546c8c..d0e2bbf 100644 --- a/test/FacadeCompanyName.FacadeProjectName.Tests/FacadeCompanyName.FacadeProjectName.Tests.csproj +++ b/test/FacadeCompanyName.FacadeProjectName.Tests/FacadeCompanyName.FacadeProjectName.Tests.csproj @@ -1,17 +1,17 @@  - net7.0 + net8.0 false - - + + - - + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/test/FacadeCompanyName.FacadeProjectName.Tests/FacadeProjectNameTestModule.cs b/test/FacadeCompanyName.FacadeProjectName.Tests/FacadeProjectNameTestModule.cs index f8b2e54..38793e2 100644 --- a/test/FacadeCompanyName.FacadeProjectName.Tests/FacadeProjectNameTestModule.cs +++ b/test/FacadeCompanyName.FacadeProjectName.Tests/FacadeProjectNameTestModule.cs @@ -9,7 +9,10 @@ using Castle.Facilities.Logging; using Facade.NLogger; using FacadeCompanyName.FacadeProjectName.Application; -using FacadeCompanyName.FacadeProjectName.DomainService.Share; +using FacadeCompanyName.FacadeProjectName.DomainService.Share; +using Microsoft.Extensions.Hosting; +using System; +using System.IO; namespace FacadeCompanyName.FacadeProjectName.Tests { @@ -18,9 +21,9 @@ namespace FacadeCompanyName.FacadeProjectName.Tests typeof(FacadeProjectNameApplicationModule) )] public class FacadeProjectNameTestModule : AbpModule - { + { public FacadeProjectNameTestModule() - { + { } public override void PreInitialize() @@ -31,15 +34,21 @@ public override void PreInitialize() }); IocManager.Register(Abp.Dependency.DependencyLifeStyle.Singleton); var facadeConfiguration = IocManager.Resolve(); - facadeConfiguration.AppName = "FacadeProjectName_Tests"; - - // Disable static mapper usage since it breaks unit tests (see https://github.com/aspnetboilerplate/aspnetboilerplate/issues/2052) - // Configuration.Modules.AbpAutoMapper().UseStaticMapper = false; - + facadeConfiguration.AppName = "FacadeProjectName_Tests"; + facadeConfiguration.AppRootPath = Directory.GetCurrentDirectory(); + facadeConfiguration.IsDevelopment = true; + facadeConfiguration.AppEnvName = "Development"; + + // Disable static mapper usage since it breaks unit tests (see https://github.com/aspnetboilerplate/aspnetboilerplate/issues/2052) + // Configuration.Modules.AbpAutoMapper().UseStaticMapper = false; + + Configuration.Auditing.IsEnabled = false; Configuration.Auditing.IsEnabledForAnonymousUsers = true; Configuration.BackgroundJobs.IsJobExecutionEnabled = false; Configuration.MultiTenancy.IsEnabled = FacadeProjectNameConsts.MultiTenancyEnabled; Configuration.DefaultNameOrConnectionString = "Data Source=ORCL;Persist Security Info=True;User Id=ORCL;Password=ORCL;"; + + Configuration.Localization.Languages.Clear(); Configuration.Localization.Languages.Add(new LanguageInfo("zh", "ļ", isDefault: true)); Configuration.Localization.Languages.Add(new LanguageInfo("en", "English"));