diff --git a/KonSoft.sln.DotSettings b/KonSoft.sln.DotSettings
index c044e41..9495510 100644
--- a/KonSoft.sln.DotSettings
+++ b/KonSoft.sln.DotSettings
@@ -22,4 +22,5 @@
SQL
True
True
+ True
\ No newline at end of file
diff --git a/gateways/KonSoft.InternalGateway/Aggregations/ApplicationConfiguration/AppConfigurationAggregation.cs b/gateways/KonSoft.InternalGateway/Aggregations/ApplicationConfiguration/AppConfigurationAggregation.cs
new file mode 100644
index 0000000..8cff5c1
--- /dev/null
+++ b/gateways/KonSoft.InternalGateway/Aggregations/ApplicationConfiguration/AppConfigurationAggregation.cs
@@ -0,0 +1,91 @@
+using KonSoft.InternalGateway.Aggregations.Base;
+using Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations;
+using Volo.Abp.DependencyInjection;
+
+namespace KonSoft.InternalGateway.Aggregations.ApplicationConfiguration;
+
+public class AppConfigurationAggregation : AggregateServiceBase,
+ IAppConfigurationAggregation, ITransientDependency
+{
+ public string AppConfigRouteName => "EshopOnAbpApplicationConfiguration";
+ public string AppConfigEndpoint => "api/abp/application-configuration";
+
+ protected IAppConfigurationRemoteService AppConfigurationRemoteService { get; }
+
+ public AppConfigurationAggregation(
+ IAppConfigurationRemoteService appConfigurationRemoteService) : base(
+ appConfigurationRemoteService)
+ {
+ AppConfigurationRemoteService = appConfigurationRemoteService;
+ }
+
+ public async Task GetAppConfigurationAsync(AppConfigurationRequest input)
+ {
+ var remoteAppConfigurationResults =
+ await AppConfigurationRemoteService.GetMultipleAsync(input.Endpoints);
+
+ //merge only application configuration settings data
+ var mergedResult = MergeAppConfigurationSettingsData(remoteAppConfigurationResults);
+
+ //return result
+ return mergedResult;
+ }
+
+ private static ApplicationConfigurationDto MergeAppConfigurationSettingsData(
+ IDictionary appConfigurations)
+ {
+ var appConfigurationDto = CreateInitialAppConfigDto(appConfigurations);
+
+ foreach (var (_, appConfig) in appConfigurations)
+ {
+ foreach (var resource in appConfig.Setting.Values)
+ {
+ appConfigurationDto.Setting.Values.TryAdd(resource.Key, resource.Value);
+ }
+ }
+
+ return appConfigurationDto;
+ }
+
+ ///
+ /// Checks "Administration" clusterId to set the initial data from the AdministrationService.
+ /// Otherwise uses the first available service for the initial application configuration data
+ ///
+ ///
+ ///
+ private static ApplicationConfigurationDto CreateInitialAppConfigDto(
+ IDictionary appConfigurations
+ )
+ {
+ if (appConfigurations.Count == 0)
+ {
+ return new ApplicationConfigurationDto();
+ }
+
+ if (appConfigurations.TryGetValue("Administration_AppConfig", out var administrationServiceData))
+ {
+ return MapServiceData(administrationServiceData);
+ }
+
+ return MapServiceData(appConfigurations.First().Value);
+ }
+
+ private static ApplicationConfigurationDto MapServiceData(ApplicationConfigurationDto appConfiguration)
+ {
+ return new ApplicationConfigurationDto
+ {
+ Localization = appConfiguration.Localization,
+ Auth = appConfiguration.Auth,
+ Clock = appConfiguration.Clock,
+ Setting = appConfiguration.Setting,
+ Features = appConfiguration.Features,
+ Timing = appConfiguration.Timing,
+ CurrentTenant = appConfiguration.CurrentTenant,
+ CurrentUser = appConfiguration.CurrentUser,
+ ExtraProperties = appConfiguration.ExtraProperties,
+ GlobalFeatures = appConfiguration.GlobalFeatures,
+ MultiTenancy = appConfiguration.MultiTenancy,
+ ObjectExtensions = appConfiguration.ObjectExtensions
+ };
+ }
+}
\ No newline at end of file
diff --git a/gateways/KonSoft.InternalGateway/Aggregations/ApplicationConfiguration/AppConfigurationCachedService.cs b/gateways/KonSoft.InternalGateway/Aggregations/ApplicationConfiguration/AppConfigurationCachedService.cs
new file mode 100644
index 0000000..327a686
--- /dev/null
+++ b/gateways/KonSoft.InternalGateway/Aggregations/ApplicationConfiguration/AppConfigurationCachedService.cs
@@ -0,0 +1,9 @@
+using KonSoft.InternalGateway.Aggregations.Base;
+using Microsoft.Extensions.Caching.Memory;
+using Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations;
+using Volo.Abp.DependencyInjection;
+
+namespace KonSoft.InternalGateway.Aggregations.ApplicationConfiguration;
+
+public class AppConfigurationCachedService(IMemoryCache applicationConfigurationCache)
+ : CachedServiceBase(applicationConfigurationCache), ISingletonDependency;
\ No newline at end of file
diff --git a/gateways/KonSoft.InternalGateway/Aggregations/ApplicationConfiguration/AppConfigurationRemoteService.cs b/gateways/KonSoft.InternalGateway/Aggregations/ApplicationConfiguration/AppConfigurationRemoteService.cs
new file mode 100644
index 0000000..adae9a0
--- /dev/null
+++ b/gateways/KonSoft.InternalGateway/Aggregations/ApplicationConfiguration/AppConfigurationRemoteService.cs
@@ -0,0 +1,13 @@
+using KonSoft.InternalGateway.Aggregations.Base;
+using Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations;
+using Volo.Abp.DependencyInjection;
+using Volo.Abp.Json;
+
+namespace KonSoft.InternalGateway.Aggregations.ApplicationConfiguration;
+
+public class AppConfigurationRemoteService(
+ IHttpContextAccessor httpContextAccessor,
+ IJsonSerializer jsonSerializer,
+ ILogger> logger)
+ : AggregateRemoteServiceBase(httpContextAccessor, jsonSerializer, logger),
+ IAppConfigurationRemoteService, ITransientDependency;
\ No newline at end of file
diff --git a/gateways/KonSoft.InternalGateway/Aggregations/ApplicationConfiguration/AppConfigurationRequest.cs b/gateways/KonSoft.InternalGateway/Aggregations/ApplicationConfiguration/AppConfigurationRequest.cs
new file mode 100644
index 0000000..ae6e8ed
--- /dev/null
+++ b/gateways/KonSoft.InternalGateway/Aggregations/ApplicationConfiguration/AppConfigurationRequest.cs
@@ -0,0 +1,8 @@
+using KonSoft.InternalGateway.Aggregations.Base;
+
+namespace KonSoft.InternalGateway.Aggregations.ApplicationConfiguration;
+
+public class AppConfigurationRequest : IRequestInput
+{
+ public Dictionary Endpoints { get; } = new();
+}
\ No newline at end of file
diff --git a/gateways/KonSoft.InternalGateway/Aggregations/ApplicationConfiguration/IAppConfigurationAggregation.cs b/gateways/KonSoft.InternalGateway/Aggregations/ApplicationConfiguration/IAppConfigurationAggregation.cs
new file mode 100644
index 0000000..4956d8c
--- /dev/null
+++ b/gateways/KonSoft.InternalGateway/Aggregations/ApplicationConfiguration/IAppConfigurationAggregation.cs
@@ -0,0 +1,10 @@
+using Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations;
+
+namespace KonSoft.InternalGateway.Aggregations.ApplicationConfiguration;
+
+public interface IAppConfigurationAggregation
+{
+ string AppConfigRouteName { get; }
+ string AppConfigEndpoint { get; }
+ Task GetAppConfigurationAsync(AppConfigurationRequest input);
+}
\ No newline at end of file
diff --git a/gateways/KonSoft.InternalGateway/Aggregations/ApplicationConfiguration/IAppConfigurationRemoteService.cs b/gateways/KonSoft.InternalGateway/Aggregations/ApplicationConfiguration/IAppConfigurationRemoteService.cs
new file mode 100644
index 0000000..ade1b4d
--- /dev/null
+++ b/gateways/KonSoft.InternalGateway/Aggregations/ApplicationConfiguration/IAppConfigurationRemoteService.cs
@@ -0,0 +1,6 @@
+using KonSoft.InternalGateway.Aggregations.Base;
+using Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations;
+
+namespace KonSoft.InternalGateway.Aggregations.ApplicationConfiguration;
+
+public interface IAppConfigurationRemoteService : IAggregateRemoteService;
\ No newline at end of file
diff --git a/gateways/KonSoft.InternalGateway/Aggregations/Base/AggregateRemoteServiceBase.cs b/gateways/KonSoft.InternalGateway/Aggregations/Base/AggregateRemoteServiceBase.cs
new file mode 100644
index 0000000..b89b9a5
--- /dev/null
+++ b/gateways/KonSoft.InternalGateway/Aggregations/Base/AggregateRemoteServiceBase.cs
@@ -0,0 +1,103 @@
+using Volo.Abp.Json;
+
+namespace KonSoft.InternalGateway.Aggregations.Base;
+
+public abstract class AggregateRemoteServiceBase : IAggregateRemoteService
+{
+ private readonly IHttpContextAccessor _httpContextAccessor;
+ private readonly ILogger> _logger;
+ protected IJsonSerializer JsonSerializer { get; }
+
+ protected AggregateRemoteServiceBase(IHttpContextAccessor httpContextAccessor, IJsonSerializer jsonSerializer,
+ ILogger> logger)
+ {
+ _httpContextAccessor = httpContextAccessor;
+ JsonSerializer = jsonSerializer;
+ _logger = logger;
+ }
+
+ public async Task> GetMultipleAsync(
+ Dictionary serviceNameWithUrlDictionary)
+ {
+ Dictionary> completedTasks = new Dictionary>();
+ Dictionary> runningTasks = new Dictionary>();
+ Dictionary completedResult = new Dictionary();
+
+ using (HttpClient httpClient = CreateHttpClient())
+ {
+ foreach (var service in serviceNameWithUrlDictionary)
+ {
+ Task requestTask =
+ MakeRequestAsync(httpClient, service.Value);
+ runningTasks.Add(service.Key, requestTask);
+ }
+
+ while (runningTasks.Count > 0)
+ {
+ KeyValuePair> completedTask = await WaitForAnyTaskAsync(runningTasks);
+
+ runningTasks.Remove(completedTask.Key);
+
+ try
+ {
+ TDto result = await completedTask.Value;
+
+ completedTasks.Add(completedTask.Key, completedTask.Value);
+ completedResult.Add(completedTask.Key, result);
+
+ _logger.LogInformation("Localization Key: {0}, Value: {1}", completedTask.Key, result);
+ }
+ catch (Exception ex)
+ {
+ _logger.LogInformation("Error for the {0}: {1}", completedTask.Key, ex.Message);
+ }
+ }
+ }
+
+ return completedResult;
+ }
+
+ private HttpClient CreateHttpClient()
+ {
+ var httpClient = new HttpClient();
+
+ var headers = _httpContextAccessor.HttpContext?.Request.Headers;
+ if (headers != null)
+ {
+ foreach (var header in headers)
+ {
+ httpClient.DefaultRequestHeaders.Add(header.Key, header.Value.ToArray());
+ }
+ }
+
+ return httpClient;
+ }
+
+ public async Task MakeRequestAsync(HttpClient httpClient, string url)
+ {
+ try
+ {
+ HttpResponseMessage response = await httpClient.GetAsync(url);
+ response.EnsureSuccessStatusCode();
+
+ var content = await response.Content.ReadAsStringAsync();
+ return JsonSerializer.Deserialize(content);
+ }
+ catch (Exception e)
+ {
+ _logger.LogInformation("Error making request to {0}: {1}", url, e.Message);
+ throw;
+ }
+ }
+
+ public async Task>> WaitForAnyTaskAsync(
+ Dictionary> tasks)
+ {
+ var completedTask = Task.WhenAny(tasks.Values);
+ var result = await completedTask;
+
+ var completedTaskPair = tasks.First(kv => kv.Value == result);
+
+ return completedTaskPair;
+ }
+}
\ No newline at end of file
diff --git a/gateways/KonSoft.InternalGateway/Aggregations/Base/AggregateServiceBase.cs b/gateways/KonSoft.InternalGateway/Aggregations/Base/AggregateServiceBase.cs
new file mode 100644
index 0000000..116e531
--- /dev/null
+++ b/gateways/KonSoft.InternalGateway/Aggregations/Base/AggregateServiceBase.cs
@@ -0,0 +1,30 @@
+namespace KonSoft.InternalGateway.Aggregations.Base;
+
+public abstract class AggregateServiceBase
+{
+ private readonly IAggregateRemoteService _remoteService;
+
+ public AggregateServiceBase(IAggregateRemoteService remoteService)
+ {
+ _remoteService = remoteService;
+ }
+
+ public virtual async Task> GetMultipleFromRemoteAsync(List missingKeys,
+ Dictionary endpoints)
+ {
+ return await _remoteService
+ .GetMultipleAsync(endpoints
+ .Where(kv => missingKeys.Contains(kv.Key))
+ .ToDictionary(k => k.Key, v => v.Value));
+ }
+
+ public List GetMissingServiceKeys(
+ IDictionary serviceNamesWithData,
+ Dictionary serviceNamesWithUrls)
+ {
+ List missingKeysInCache = serviceNamesWithUrls.Keys.Except(serviceNamesWithData.Keys).ToList();
+ List missingKeysInUrls = serviceNamesWithData.Keys.Except(serviceNamesWithUrls.Keys).ToList();
+
+ return missingKeysInCache.Concat(missingKeysInUrls).ToList();
+ }
+}
\ No newline at end of file
diff --git a/gateways/KonSoft.InternalGateway/Aggregations/Base/CachedServiceBase.cs b/gateways/KonSoft.InternalGateway/Aggregations/Base/CachedServiceBase.cs
new file mode 100644
index 0000000..d7fa387
--- /dev/null
+++ b/gateways/KonSoft.InternalGateway/Aggregations/Base/CachedServiceBase.cs
@@ -0,0 +1,39 @@
+using Microsoft.Extensions.Caching.Memory;
+
+namespace KonSoft.InternalGateway.Aggregations.Base;
+
+public abstract class CachedServiceBase : ICachedServiceBase
+{
+ private readonly IMemoryCache _cache;
+
+ protected MemoryCacheEntryOptions CacheEntryOptions { get; } = new()
+ {
+ AbsoluteExpirationRelativeToNow = TimeSpan.FromHours(24),
+ SlidingExpiration = TimeSpan.FromHours(4)
+ };
+
+ protected CachedServiceBase(IMemoryCache cache)
+ {
+ _cache = cache ?? throw new ArgumentNullException(nameof(cache));
+ }
+
+ public void Add(string serviceName, TCacheValue data)
+ {
+ _cache.Set(serviceName, data, CacheEntryOptions);
+ }
+
+ public IDictionary GetManyAsync(IEnumerable serviceNames)
+ {
+ var result = new Dictionary();
+
+ foreach (var serviceName in serviceNames)
+ {
+ if (_cache.TryGetValue(serviceName, out TCacheValue data))
+ {
+ result.Add(serviceName, data);
+ }
+ }
+
+ return result;
+ }
+}
\ No newline at end of file
diff --git a/gateways/KonSoft.InternalGateway/Aggregations/Base/IAggregateRemoteService.cs b/gateways/KonSoft.InternalGateway/Aggregations/Base/IAggregateRemoteService.cs
new file mode 100644
index 0000000..bf57ca6
--- /dev/null
+++ b/gateways/KonSoft.InternalGateway/Aggregations/Base/IAggregateRemoteService.cs
@@ -0,0 +1,8 @@
+namespace KonSoft.InternalGateway.Aggregations.Base;
+
+public interface IAggregateRemoteService
+{
+ Task> GetMultipleAsync(Dictionary serviceNameWithUrlDictionary);
+ Task MakeRequestAsync(HttpClient httpClient, string url);
+ Task>> WaitForAnyTaskAsync(Dictionary> tasks);
+}
\ No newline at end of file
diff --git a/gateways/KonSoft.InternalGateway/Aggregations/Base/ICachedServiceBase.cs b/gateways/KonSoft.InternalGateway/Aggregations/Base/ICachedServiceBase.cs
new file mode 100644
index 0000000..82c78aa
--- /dev/null
+++ b/gateways/KonSoft.InternalGateway/Aggregations/Base/ICachedServiceBase.cs
@@ -0,0 +1,7 @@
+namespace KonSoft.InternalGateway.Aggregations.Base;
+
+public interface ICachedServiceBase
+{
+ void Add(string serviceName, TValue data);
+ IDictionary GetManyAsync(IEnumerable serviceNames);
+}
\ No newline at end of file
diff --git a/gateways/KonSoft.InternalGateway/Aggregations/Base/IRequestInput.cs b/gateways/KonSoft.InternalGateway/Aggregations/Base/IRequestInput.cs
new file mode 100644
index 0000000..b76c233
--- /dev/null
+++ b/gateways/KonSoft.InternalGateway/Aggregations/Base/IRequestInput.cs
@@ -0,0 +1,6 @@
+namespace KonSoft.InternalGateway.Aggregations.Base;
+
+public interface IRequestInput
+{
+ Dictionary Endpoints { get; }
+}
\ No newline at end of file
diff --git a/gateways/KonSoft.InternalGateway/Aggregations/Localization/ILocalizationAggregation.cs b/gateways/KonSoft.InternalGateway/Aggregations/Localization/ILocalizationAggregation.cs
new file mode 100644
index 0000000..27ae2f5
--- /dev/null
+++ b/gateways/KonSoft.InternalGateway/Aggregations/Localization/ILocalizationAggregation.cs
@@ -0,0 +1,10 @@
+using Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations;
+
+namespace KonSoft.InternalGateway.Aggregations.Localization;
+
+public interface ILocalizationAggregation
+{
+ string LocalizationRouteName { get; }
+ string LocalizationEndpoint { get; }
+ Task GetLocalizationAsync(LocalizationRequest input);
+}
\ No newline at end of file
diff --git a/gateways/KonSoft.InternalGateway/Aggregations/Localization/ILocalizationRemoteService.cs b/gateways/KonSoft.InternalGateway/Aggregations/Localization/ILocalizationRemoteService.cs
new file mode 100644
index 0000000..28a1e0a
--- /dev/null
+++ b/gateways/KonSoft.InternalGateway/Aggregations/Localization/ILocalizationRemoteService.cs
@@ -0,0 +1,6 @@
+using KonSoft.InternalGateway.Aggregations.Base;
+using Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations;
+
+namespace KonSoft.InternalGateway.Aggregations.Localization;
+
+public interface ILocalizationRemoteService : IAggregateRemoteService;
\ No newline at end of file
diff --git a/gateways/KonSoft.InternalGateway/Aggregations/Localization/LocalizationAggregation.cs b/gateways/KonSoft.InternalGateway/Aggregations/Localization/LocalizationAggregation.cs
new file mode 100644
index 0000000..bccd587
--- /dev/null
+++ b/gateways/KonSoft.InternalGateway/Aggregations/Localization/LocalizationAggregation.cs
@@ -0,0 +1,69 @@
+using KonSoft.InternalGateway.Aggregations.Base;
+using Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations;
+using Volo.Abp.DependencyInjection;
+
+namespace KonSoft.InternalGateway.Aggregations.Localization;
+
+public class LocalizationAggregation : AggregateServiceBase, ILocalizationAggregation,
+ ITransientDependency
+{
+ public string LocalizationRouteName => "EshopOnAbpLocalization";
+ public string LocalizationEndpoint => "api/abp/application-localization";
+ protected LocalizationCachedService LocalizationCachedService { get; }
+
+ public LocalizationAggregation(
+ LocalizationCachedService localizationCachedService,
+ ILocalizationRemoteService localizationRemoteService)
+ : base(localizationRemoteService)
+ {
+ LocalizationCachedService = localizationCachedService;
+ }
+
+ public async Task GetLocalizationAsync(LocalizationRequest input)
+ {
+ // Check the cache service
+ var cachedLocalization = LocalizationCachedService
+ .GetManyAsync(input.Endpoints.Keys.ToArray());
+
+ // Compare cache with input service list
+ var missingLocalizationKeys = GetMissingServiceKeys(cachedLocalization, input.Endpoints);
+
+ if (missingLocalizationKeys.Count != 0)
+ {
+ // Make request to remote localization service to get missing localizations
+ var remoteLocalizationResults =
+ await GetMultipleFromRemoteAsync(missingLocalizationKeys, input.Endpoints);
+
+ // Update localization cache
+ foreach (var result in remoteLocalizationResults)
+ {
+ LocalizationCachedService.Add(result.Key, result.Value);
+ }
+
+ cachedLocalization = LocalizationCachedService
+ .GetManyAsync(input.Endpoints.Keys.ToArray());
+ }
+
+ //merge result
+ var mergedResult = MergeLocalizationData(cachedLocalization);
+
+ //return result
+ return mergedResult;
+ }
+
+ private static ApplicationLocalizationDto MergeLocalizationData(
+ IDictionary resourceDictionary)
+ {
+ var localizationDto = new ApplicationLocalizationDto();
+
+ foreach (var localization in resourceDictionary)
+ {
+ foreach (var resource in localization.Value.Resources)
+ {
+ localizationDto.Resources.TryAdd(resource.Key, resource.Value);
+ }
+ }
+
+ return localizationDto;
+ }
+}
\ No newline at end of file
diff --git a/gateways/KonSoft.InternalGateway/Aggregations/Localization/LocalizationCachedService.cs b/gateways/KonSoft.InternalGateway/Aggregations/Localization/LocalizationCachedService.cs
new file mode 100644
index 0000000..25b4a65
--- /dev/null
+++ b/gateways/KonSoft.InternalGateway/Aggregations/Localization/LocalizationCachedService.cs
@@ -0,0 +1,9 @@
+using KonSoft.InternalGateway.Aggregations.Base;
+using Microsoft.Extensions.Caching.Memory;
+using Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations;
+using Volo.Abp.DependencyInjection;
+
+namespace KonSoft.InternalGateway.Aggregations.Localization;
+
+public class LocalizationCachedService(IMemoryCache localizationCache)
+ : CachedServiceBase(localizationCache), ISingletonDependency;
\ No newline at end of file
diff --git a/gateways/KonSoft.InternalGateway/Aggregations/Localization/LocalizationRemoteService.cs b/gateways/KonSoft.InternalGateway/Aggregations/Localization/LocalizationRemoteService.cs
new file mode 100644
index 0000000..7316c2d
--- /dev/null
+++ b/gateways/KonSoft.InternalGateway/Aggregations/Localization/LocalizationRemoteService.cs
@@ -0,0 +1,18 @@
+using KonSoft.InternalGateway.Aggregations.Base;
+using Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations;
+using Volo.Abp.DependencyInjection;
+using Volo.Abp.Json;
+
+namespace KonSoft.InternalGateway.Aggregations.Localization;
+
+public class LocalizationRemoteService : AggregateRemoteServiceBase,
+ ILocalizationRemoteService, ITransientDependency
+{
+ public LocalizationRemoteService(
+ IHttpContextAccessor httpContextAccessor,
+ IJsonSerializer jsonSerializer,
+ ILogger> logger)
+ : base(httpContextAccessor, jsonSerializer, logger)
+ {
+ }
+}
\ No newline at end of file
diff --git a/gateways/KonSoft.InternalGateway/Aggregations/Localization/LocalizationRequest.cs b/gateways/KonSoft.InternalGateway/Aggregations/Localization/LocalizationRequest.cs
new file mode 100644
index 0000000..3ec91f6
--- /dev/null
+++ b/gateways/KonSoft.InternalGateway/Aggregations/Localization/LocalizationRequest.cs
@@ -0,0 +1,14 @@
+using KonSoft.InternalGateway.Aggregations.Base;
+
+namespace KonSoft.InternalGateway.Aggregations.Localization;
+
+public class LocalizationRequest : IRequestInput
+{
+ public Dictionary Endpoints { get; } = new();
+ public string CultureName { get; set; }
+
+ public LocalizationRequest(string cultureName)
+ {
+ CultureName = cultureName;
+ }
+}
\ No newline at end of file
diff --git a/gateways/KonSoft.InternalGateway/InternalGatewayModule.cs b/gateways/KonSoft.InternalGateway/InternalGatewayModule.cs
index 585c29a..c677f13 100644
--- a/gateways/KonSoft.InternalGateway/InternalGatewayModule.cs
+++ b/gateways/KonSoft.InternalGateway/InternalGatewayModule.cs
@@ -1,5 +1,9 @@
using KonSoft.Admin;
+using KonSoft.Shared.Hosting.AspNetCore;
using KonSoft.Shared.Hosting.Gateways;
+using Microsoft.AspNetCore.Cors;
+using Microsoft.AspNetCore.Rewrite;
+using Volo.Abp;
using Volo.Abp.Modularity;
namespace KonSoft.InternalGateway
@@ -10,5 +14,71 @@ namespace KonSoft.InternalGateway
)]
public class InternalGatewayModule : AbpModule
{
+ public override void ConfigureServices(ServiceConfigurationContext context)
+ {
+ var configuration = context.Services.GetConfiguration();
+ var hostingEnvironment = context.Services.GetHostingEnvironment();
+
+ SwaggerConfigurationHelper.ConfigureWithOidc(
+ context: context,
+ authority: configuration["AuthServer:Authority"]!,
+ scopes:
+ [
+ "Admin", "Dispatch", "Payment", "Report", "TenantManagement"
+ ],
+ apiTitle: "Internal Gateway API",
+ discoveryEndpoint: configuration["AuthServer:MetadataAddress"]
+ );
+
+ context.Services.AddCors(options =>
+ {
+ options.AddDefaultPolicy(builder =>
+ {
+ builder
+ .WithOrigins(
+ configuration["App:CorsOrigins"]!
+ .Split(",", StringSplitOptions.RemoveEmptyEntries)
+ .Select(o => o.Trim().RemovePostFix("/"))
+ .ToArray()
+ )
+ .WithAbpExposedHeaders()
+ .SetIsOriginAllowedToAllowWildcardSubdomains()
+ .AllowAnyHeader()
+ .AllowAnyMethod()
+ .AllowCredentials();
+ });
+ });
+
+ context.Services.AddMemoryCache();
+ }
+
+ public override void OnApplicationInitialization(ApplicationInitializationContext context)
+ {
+ var app = context.GetApplicationBuilder();
+ var env = context.GetEnvironment();
+
+ if (env.IsDevelopment())
+ {
+ app.UseDeveloperExceptionPage();
+ }
+
+ app.UseCorrelationId();
+ app.UseCors();
+ app.UseAbpRequestLocalization();
+ app.UseStaticFiles();
+ app.UseRouting();
+ app.UseAuthorization();
+ app.UseSwaggerUIWithYarp(context);
+ app.UseAbpSerilogEnrichers();
+
+ app.UseRewriter(new RewriteOptions()
+ // Regex for "", "/" and "" (whitespace)
+ .AddRedirect("^(|\\|\\s+)$", "/swagger"));
+
+ app.UseEndpoints(endpoints =>
+ {
+ endpoints.MapReverseProxyWithLocalization();
+ });
+ }
}
}
diff --git a/gateways/KonSoft.InternalGateway/KonSoft.InternalGateway.http b/gateways/KonSoft.InternalGateway/KonSoft.InternalGateway.http
deleted file mode 100644
index 95c5e0b..0000000
--- a/gateways/KonSoft.InternalGateway/KonSoft.InternalGateway.http
+++ /dev/null
@@ -1,6 +0,0 @@
-@KonSoft.InternalGateway_HostAddress = http://localhost:5090
-
-GET {{KonSoft.InternalGateway_HostAddress}}/weatherforecast/
-Accept: application/json
-
-###
diff --git a/gateways/KonSoft.InternalGateway/Program.cs b/gateways/KonSoft.InternalGateway/Program.cs
index c929e00..85a050f 100644
--- a/gateways/KonSoft.InternalGateway/Program.cs
+++ b/gateways/KonSoft.InternalGateway/Program.cs
@@ -1,9 +1,6 @@
using KonSoft.InternalGateway;
-using KonSoft.InternalGateway.Extensions;
using KonSoft.Shared.Hosting.AspNetCore;
-using Microsoft.AspNetCore.Rewrite;
-using Microsoft.Extensions.DependencyInjection;
-using Microsoft.OpenApi.Models;
+using KonSoft.Shared.Hosting.Gateways;
using Serilog;
var assemblyName = typeof(Program).Assembly.GetName().Name!;
@@ -11,6 +8,8 @@ SerilogConfigurationHelper.Configure(assemblyName);
try
{
+ Log.Information($"Starting {assemblyName}.");
+
var builder = WebApplication.CreateBuilder(args);
builder.Configuration
.AddAgileConfig(option =>
@@ -19,30 +18,13 @@ try
});
builder.Host
.AddAppSettingsSecretsJson()
+ .AddYarpJson()
.UseAutofac()
.UseSerilog();
- builder.Services.AddAbpSwaggerGenWithOidc(builder.Configuration["AuthServer:Authority"]!, setupAction: options =>
- {
- options.SwaggerDoc("v1", new OpenApiInfo
- {
- Title = "Gateway",
- Version = "v1"
- });
- options.DocInclusionPredicate((docName, description) => true);
- options.CustomSchemaIds(type => type.FullName);
- });
-
-
- builder.Services.AddReverseProxy()
- .LoadFromConfig(builder.Configuration.GetSection("ReverseProxy"));
- builder.Services.AddControllers();
await builder.AddApplicationAsync();
var app = builder.Build();
await app.InitializeApplicationAsync();
- app.UseSwaggerUIWithYarp();
- app.MapReverseProxy();
- app.MapGet("/heath", () => "Online");
await app.RunAsync();
return 0;
diff --git a/gateways/KonSoft.InternalGateway/Properties/launchSettings.json b/gateways/KonSoft.InternalGateway/Properties/launchSettings.json
index ed7fdeb..0d556a1 100644
--- a/gateways/KonSoft.InternalGateway/Properties/launchSettings.json
+++ b/gateways/KonSoft.InternalGateway/Properties/launchSettings.json
@@ -1,15 +1,5 @@
{
"profiles": {
- "http": {
- "commandName": "Project",
- "launchBrowser": true,
- "launchUrl": "swagger",
- "environmentVariables": {
- "ASPNETCORE_ENVIRONMENT": "Development"
- },
- "dotnetRunMessages": true,
- "applicationUrl": "http://localhost:5090"
- },
"https": {
"commandName": "Project",
"launchBrowser": true,
@@ -18,35 +8,8 @@
"ASPNETCORE_ENVIRONMENT": "Development"
},
"dotnetRunMessages": true,
- "applicationUrl": "https://localhost:7264;http://localhost:5090"
- },
- "IIS Express": {
- "commandName": "IISExpress",
- "launchBrowser": true,
- "launchUrl": "swagger",
- "environmentVariables": {
- "ASPNETCORE_ENVIRONMENT": "Development"
- }
- },
- "Container (Dockerfile)": {
- "commandName": "Docker",
- "launchBrowser": true,
- "launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}/swagger",
- "environmentVariables": {
- "ASPNETCORE_HTTPS_PORTS": "8081",
- "ASPNETCORE_HTTP_PORTS": "8080"
- },
- "publishAllPorts": true,
- "useSSL": true
+ "applicationUrl": "https://localhost:7264"
}
},
- "$schema": "http://json.schemastore.org/launchsettings.json",
- "iisSettings": {
- "windowsAuthentication": false,
- "anonymousAuthentication": true,
- "iisExpress": {
- "applicationUrl": "http://localhost:15968",
- "sslPort": 44395
- }
- }
+ "$schema": "http://json.schemastore.org/launchsettings.json"
}
\ No newline at end of file
diff --git a/gateways/KonSoft.InternalGateway/ReverseProxyBuilderExtensions.cs b/gateways/KonSoft.InternalGateway/ReverseProxyBuilderExtensions.cs
new file mode 100644
index 0000000..66ab69c
--- /dev/null
+++ b/gateways/KonSoft.InternalGateway/ReverseProxyBuilderExtensions.cs
@@ -0,0 +1,109 @@
+using KonSoft.InternalGateway.Aggregations.ApplicationConfiguration;
+using KonSoft.InternalGateway.Aggregations.Localization;
+using Yarp.ReverseProxy.Configuration;
+
+namespace KonSoft.InternalGateway
+{
+ public static class ReverseProxyBuilderExtensions
+ {
+ public static ReverseProxyConventionBuilder MapReverseProxyWithLocalization(
+ this IEndpointRouteBuilder endpoints)
+ {
+ return endpoints.MapReverseProxy(proxyBuilder =>
+ {
+ proxyBuilder.Use(async (context, next) =>
+ {
+ var endpoint = context.GetEndpoint();
+
+ var localizationAggregation = context.RequestServices
+ .GetRequiredService();
+
+ var appConfigurationAggregation = context.RequestServices
+ .GetRequiredService();
+
+ // The "/api/abp/application-localization" endpoint
+ if (localizationAggregation.LocalizationRouteName == endpoint?.DisplayName)
+ {
+ var localizationRequestInput =
+ CreateLocalizationRequestInput(context, localizationAggregation.LocalizationEndpoint);
+
+ var result = await localizationAggregation.GetLocalizationAsync(localizationRequestInput);
+ await context.Response.WriteAsJsonAsync(result);
+ return;
+ }
+
+ // The "/api/abp/application-configuration" endpoint
+ if (appConfigurationAggregation.AppConfigRouteName == endpoint?.DisplayName)
+ {
+ var appConfigurationRequestInput =
+ CreateAppConfigurationRequestInput(context, appConfigurationAggregation.AppConfigEndpoint);
+
+ var result =
+ await appConfigurationAggregation.GetAppConfigurationAsync(appConfigurationRequestInput);
+ await context.Response.WriteAsJsonAsync(result);
+ return;
+ }
+
+ await next();
+ });
+
+ proxyBuilder.UseLoadBalancing();
+ });
+ }
+
+ private static AppConfigurationRequest CreateAppConfigurationRequestInput(HttpContext context,
+ string appConfigurationPath)
+ {
+ var proxyConfig = context.RequestServices.GetRequiredService();
+
+ var input = new AppConfigurationRequest();
+ string path = $"{appConfigurationPath}?includeLocalizationResources=false";
+
+ var clusterList = GetClusters(proxyConfig);
+ foreach (var cluster in clusterList)
+ {
+ var hostUrl = new Uri(cluster.Value.Address) + $"{path}";
+ // CacheKey/Endpoint dictionary key -> ex: ("Administration_AppConfig")
+ input.Endpoints.Add($"{cluster.Key}_AppConfig", hostUrl);
+ }
+
+ return input;
+ }
+
+ private static LocalizationRequest CreateLocalizationRequestInput(HttpContext context,
+ string localizationPath)
+ {
+ var proxyConfig = context.RequestServices.GetRequiredService();
+
+ context.Request.Query.TryGetValue("CultureName", out var cultureName);
+
+ var input = new LocalizationRequest(cultureName);
+ string path = $"{localizationPath}?cultureName={cultureName}&onlyDynamics=false";
+
+ var clusterList = GetClusters(proxyConfig);
+ foreach (var cluster in clusterList)
+ {
+ var hostUrl = new Uri(cluster.Value.Address) + $"{path}";
+ // Endpoint dictionary key -> ex: ("Administration_en")
+ input.Endpoints.Add($"{cluster.Key}_{cultureName}", hostUrl);
+ }
+
+ return input;
+ }
+
+ private static Dictionary GetClusters(IProxyConfigProvider proxyConfig)
+ {
+ var yarpConfig = proxyConfig.GetConfig();
+
+ var routedClusters = yarpConfig.Clusters
+ .SelectMany(t => t.Destinations,
+ (clusterId, destination) => new { clusterId.ClusterId, destination.Value });
+
+ return routedClusters
+ .GroupBy(q => q.Value.Address)
+ .Select(t => t.First())
+ .Distinct()
+ .ToDictionary(k => k.ClusterId, v => v.Value);
+ }
+ }
+}
diff --git a/gateways/KonSoft.InternalGateway/appsettings.json b/gateways/KonSoft.InternalGateway/appsettings.json
index 5fa4f0d..72118b3 100644
--- a/gateways/KonSoft.InternalGateway/appsettings.json
+++ b/gateways/KonSoft.InternalGateway/appsettings.json
@@ -8,6 +8,7 @@
"AuthServer": {
"Authority": "https://devauth.konsoft.top",
"RequireHttpsMetadata": true,
- "SwaggerClientId": "Gateway_Swagger"
+ "SwaggerClientId": "Gateway_Swagger",
+ "MetadataAddress": "https://devauth.konsoft.top"
}
}
diff --git a/microservices/KonSoft.Admin.HttpApi.Host/Logs/logs.txt b/microservices/KonSoft.Admin.HttpApi.Host/Logs/logs.txt
index f108cae..746daa6 100644
--- a/microservices/KonSoft.Admin.HttpApi.Host/Logs/logs.txt
+++ b/microservices/KonSoft.Admin.HttpApi.Host/Logs/logs.txt
@@ -1163,3 +1163,643 @@ System.InvalidOperationException: An exception has been raised that is likely du
2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bundling.AbpAspNetCoreMvcUiBundlingModule
2025-10-26 10:39:21.030 +08:00 [INF] - Volo.Abp.AspNetCore.MultiTenancy.AbpAspNetCoreMultiTenancyModule
2025-10-26 10:39:21.367 +08:00 [DBG] Started background worker: Volo.Abp.OpenIddict.Tokens.TokenCleanupBackgroundWorker
+2025-11-01 23:08:03.175 +08:00 [INF] Starting KonSoft.Admin.HttpApi.Host.
+2025-11-01 23:08:40.817 +08:00 [INF] Starting KonSoft.Admin.HttpApi.Host.
+2025-11-01 23:09:42.918 +08:00 [INF] Starting KonSoft.Admin.HttpApi.Host.
+2025-11-01 23:10:34.620 +08:00 [INF] Starting KonSoft.Admin.HttpApi.Host.
+2025-11-01 23:10:36.756 +08:00 [INF] Loaded ABP modules:
+2025-11-01 23:10:36.757 +08:00 [INF] - KonSoft.Admin.AdminHttpApiHostModule
+2025-11-01 23:10:36.757 +08:00 [INF] - KonSoft.Admin.AdminHttpApiModule
+2025-11-01 23:10:36.757 +08:00 [INF] - KonSoft.Admin.AdminApplicationContractsModule
+2025-11-01 23:10:36.757 +08:00 [INF] - KonSoft.Admin.AdminDomainSharedModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.AuditLogging.AbpAuditLoggingDomainSharedModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.Validation.AbpValidationModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.Validation.AbpValidationAbstractionsModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.Localization.AbpLocalizationModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.VirtualFileSystem.AbpVirtualFileSystemModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.Settings.AbpSettingsModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.Localization.AbpLocalizationAbstractionsModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.Security.AbpSecurityModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.Data.AbpDataModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.ObjectExtending.AbpObjectExtendingModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.Uow.AbpUnitOfWorkModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.EventBus.Abstractions.AbpEventBusAbstractionsModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.Threading.AbpThreadingModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainSharedModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementDomainSharedModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.Json.SystemTextJson.AbpJsonSystemTextJsonModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.Json.AbpJsonAbstractionsModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.Timing.AbpTimingModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityDomainSharedModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.Users.AbpUsersDomainSharedModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.Features.AbpFeaturesModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.MultiTenancy.AbpMultiTenancyModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.MultiTenancy.AbpMultiTenancyAbstractionsModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.Authorization.AbpAuthorizationAbstractionsModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictDomainSharedModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementDomainSharedModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementDomainSharedModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementDomainSharedModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.Account.AbpAccountApplicationContractsModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityApplicationContractsModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.Users.AbpUsersAbstractionModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.EventBus.AbpEventBusModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.Json.AbpJsonModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.Guids.AbpGuidsModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.BackgroundWorkers.AbpBackgroundWorkersModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.DistributedLocking.AbpDistributedLockingAbstractionsModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.Authorization.AbpAuthorizationModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementApplicationContractsModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.Application.AbpDddApplicationContractsModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.Auditing.AbpAuditingContractsModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementApplicationContractsModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementApplicationContractsModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementApplicationContractsModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.Account.AbpAccountHttpApiModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityHttpApiModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.AbpAspNetCoreMvcModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.AspNetCore.AbpAspNetCoreModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.Auditing.AbpAuditingModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.Http.AbpHttpModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.Http.AbpHttpAbstractionsModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.Minify.AbpMinifyModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.ExceptionHandling.AbpExceptionHandlingModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.AspNetCore.AbpAspNetCoreAbstractionsModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.ApiVersioning.AbpApiVersioningAbstractionsModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.AbpAspNetCoreMvcContractsModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.UI.Navigation.AbpUiNavigationModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.UI.AbpUiModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.GlobalFeatures.AbpGlobalFeaturesModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.Application.AbpDddApplicationModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.Domain.AbpDddDomainModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.ObjectMapping.AbpObjectMappingModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.Specifications.AbpSpecificationsModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.Caching.AbpCachingModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.Serialization.AbpSerializationModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.Domain.AbpDddDomainSharedModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.PermissionManagement.HttpApi.AbpPermissionManagementHttpApiModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementHttpApiModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementHttpApiModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementHttpApiModule
+2025-11-01 23:10:36.757 +08:00 [INF] - KonSoft.Admin.AdminApplicationModule
+2025-11-01 23:10:36.757 +08:00 [INF] - KonSoft.Admin.AdminDomainModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.AuditLogging.AbpAuditLoggingDomainModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsAbstractionsModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.AutoMapper.AbpAutoMapperModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementDomainModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityDomainModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.Users.AbpUsersDomainModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictDomainModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.PermissionManagement.OpenIddict.AbpPermissionManagementDomainOpenIddictModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementDomainModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.PermissionManagement.Identity.AbpPermissionManagementDomainIdentityModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementDomainModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementDomainModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.Emailing.AbpEmailingModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.TextTemplating.AbpTextTemplatingModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.TextTemplating.Scriban.AbpTextTemplatingScribanModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.TextTemplating.AbpTextTemplatingCoreModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.Account.AbpAccountApplicationModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityApplicationModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementApplicationModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementApplicationModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementApplicationModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementApplicationModule
+2025-11-01 23:10:36.757 +08:00 [INF] - KonSoft.Admin.EntityFrameworkCore.AdminEntityFrameworkCoreModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.Identity.EntityFrameworkCore.AbpIdentityEntityFrameworkCoreModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.Users.EntityFrameworkCore.AbpUsersEntityFrameworkCoreModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.EntityFrameworkCore.AbpEntityFrameworkCoreModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.OpenIddict.EntityFrameworkCore.AbpOpenIddictEntityFrameworkCoreModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.PermissionManagement.EntityFrameworkCore.AbpPermissionManagementEntityFrameworkCoreModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.SettingManagement.EntityFrameworkCore.AbpSettingManagementEntityFrameworkCoreModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.EntityFrameworkCore.PostgreSql.AbpEntityFrameworkCorePostgreSqlModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.BackgroundJobs.EntityFrameworkCore.AbpBackgroundJobsEntityFrameworkCoreModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.AuditLogging.EntityFrameworkCore.AbpAuditLoggingEntityFrameworkCoreModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.TenantManagement.EntityFrameworkCore.AbpTenantManagementEntityFrameworkCoreModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.FeatureManagement.EntityFrameworkCore.AbpFeatureManagementEntityFrameworkCoreModule
+2025-11-01 23:10:36.757 +08:00 [INF] - KonSoft.Shared.Hosting.Microservices.KonSoftSharedHostingMicroservicesModule
+2025-11-01 23:10:36.757 +08:00 [INF] - KonSoft.Shared.Hosting.AspNetCore.KonSoftSharedHostingAspNetCoreModule
+2025-11-01 23:10:36.757 +08:00 [INF] - KonSoft.Shared.Localization.KonSoftSharedLocalizationModule
+2025-11-01 23:10:36.757 +08:00 [INF] - KonSoft.Shared.Hosting.KonSoftSharedHostingModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.Autofac.AbpAutofacModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.Castle.AbpCastleCoreModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.AspNetCore.Serilog.AbpAspNetCoreSerilogModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.Swashbuckle.AbpSwashbuckleModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.BackgroundJobs.RabbitMQ.AbpBackgroundJobsRabbitMqModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.RabbitMQ.AbpRabbitMqModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.AspNetCore.Authentication.JwtBearer.AbpAspNetCoreAuthenticationJwtBearerModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.EventBus.RabbitMq.AbpEventBusRabbitMqModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.Caching.StackExchangeRedis.AbpCachingStackExchangeRedisModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.DistributedLocking.AbpDistributedLockingModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy.AbpAspNetCoreMvcUiMultiTenancyModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.AbpAspNetCoreMvcUiThemeSharedModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.AbpAspNetCoreMvcUiBootstrapModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.AbpAspNetCoreMvcUiModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Packages.AbpAspNetCoreMvcUiPackagesModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bundling.AbpAspNetCoreMvcUiBundlingAbstractionsModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Widgets.AbpAspNetCoreMvcUiWidgetsModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bundling.AbpAspNetCoreMvcUiBundlingModule
+2025-11-01 23:10:36.757 +08:00 [INF] - Volo.Abp.AspNetCore.MultiTenancy.AbpAspNetCoreMultiTenancyModule
+2025-11-01 23:10:37.306 +08:00 [INF] Initialized all ABP modules.
+2025-11-01 23:10:37.523 +08:00 [INF] Now listening on: http://localhost:44354
+2025-11-01 23:10:37.568 +08:00 [INF] Application started. Press Ctrl+C to shut down.
+2025-11-01 23:10:37.569 +08:00 [INF] Hosting environment: Development
+2025-11-01 23:10:37.569 +08:00 [INF] Content root path: C:\Users\Administrator\source\repos\KonSoft.Clean\microservices\KonSoft.Admin.HttpApi.Host
+2025-11-01 23:10:37.900 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:44354/ - null null
+2025-11-01 23:10:40.646 +08:00 [INF] Executing endpoint 'KonSoft.Admin.Controllers.HomeController.Index (KonSoft.Admin.HttpApi.Host)'
+2025-11-01 23:10:40.667 +08:00 [INF] Route matched with {action = "Index", controller = "Home", area = "", page = ""}. Executing controller action with signature Microsoft.AspNetCore.Mvc.ActionResult Index() on controller KonSoft.Admin.Controllers.HomeController (KonSoft.Admin.HttpApi.Host).
+2025-11-01 23:10:40.680 +08:00 [INF] Executing RedirectResult, redirecting to /swagger.
+2025-11-01 23:10:40.682 +08:00 [INF] Executed action KonSoft.Admin.Controllers.HomeController.Index (KonSoft.Admin.HttpApi.Host) in 12.8975ms
+2025-11-01 23:10:40.682 +08:00 [INF] Executed endpoint 'KonSoft.Admin.Controllers.HomeController.Index (KonSoft.Admin.HttpApi.Host)'
+2025-11-01 23:10:40.687 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:44354/ - 302 0 null 2786.7132ms
+2025-11-01 23:10:40.687 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:44354/swagger - null null
+2025-11-01 23:10:40.691 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:44354/swagger - 301 0 null 3.9366ms
+2025-11-01 23:10:40.694 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:44354/swagger/index.html - null null
+2025-11-01 23:10:40.724 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:44354/swagger/index.html - 200 null text/html;charset=utf-8 29.7605ms
+2025-11-01 23:10:40.788 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:44354/swagger/swagger-ui.css - null null
+2025-11-01 23:10:40.789 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:44354/swagger/ui/abp.js - null null
+2025-11-01 23:10:40.791 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:44354/swagger/swagger-ui-bundle.js - null null
+2025-11-01 23:10:40.790 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:44354/swagger/ui/abp.swagger.js - null null
+2025-11-01 23:10:40.791 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:44354/swagger/swagger-ui-standalone-preset.js - null null
+2025-11-01 23:10:40.791 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:44354/_framework/aspnetcore-browser-refresh.js - null null
+2025-11-01 23:10:40.792 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:44354/_framework/aspnetcore-browser-refresh.js - 200 16537 application/javascript; charset=utf-8 0.7413ms
+2025-11-01 23:10:40.793 +08:00 [INF] Sending file. Request path: '/swagger/ui/abp.swagger.js'. Physical path: 'N/A'
+2025-11-01 23:10:40.793 +08:00 [INF] Sending file. Request path: '/swagger/ui/abp.js'. Physical path: 'N/A'
+2025-11-01 23:10:40.793 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:44354/swagger/ui/abp.js - 200 3122 application/javascript 4.3881ms
+2025-11-01 23:10:40.793 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:44354/swagger/ui/abp.swagger.js - 200 4527 application/javascript 2.82ms
+2025-11-01 23:10:40.798 +08:00 [INF] Sending file. Request path: '/swagger-ui.css'. Physical path: 'N/A'
+2025-11-01 23:10:40.798 +08:00 [INF] Sending file. Request path: '/swagger-ui-standalone-preset.js'. Physical path: 'N/A'
+2025-11-01 23:10:40.801 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:44354/swagger/swagger-ui.css - 200 144929 text/css 12.7608ms
+2025-11-01 23:10:40.801 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:44354/swagger/swagger-ui-standalone-preset.js - 200 312163 text/javascript 10.3524ms
+2025-11-01 23:10:40.809 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:44354/_vs/browserLink - null null
+2025-11-01 23:10:40.810 +08:00 [INF] Sending file. Request path: '/swagger-ui-bundle.js'. Physical path: 'N/A'
+2025-11-01 23:10:40.810 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:44354/swagger/swagger-ui-bundle.js - 200 1061536 text/javascript 19.8798ms
+2025-11-01 23:10:40.823 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:44354/_vs/browserLink - 200 null text/javascript; charset=UTF-8 14.4223ms
+2025-11-01 23:10:41.293 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:44354/swagger/v1/swagger.json - null null
+2025-11-01 23:10:41.338 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:44354/swagger/favicon-32x32.png - null null
+2025-11-01 23:10:41.340 +08:00 [INF] Sending file. Request path: '/favicon-32x32.png'. Physical path: 'N/A'
+2025-11-01 23:10:41.340 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:44354/swagger/favicon-32x32.png - 200 628 image/png 1.4472ms
+2025-11-01 23:10:41.411 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:44354/swagger/v1/swagger.json - 200 null application/json;charset=utf-8 118.4302ms
+2025-11-01 23:10:41.425 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:44354/api/abp/application-configuration - null null
+2025-11-01 23:10:41.426 +08:00 [INF] Executing endpoint 'Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.AbpApplicationConfigurationController.GetAsync (Volo.Abp.AspNetCore.Mvc)'
+2025-11-01 23:10:41.433 +08:00 [INF] Route matched with {area = "abp", action = "Get", controller = "AbpApplicationConfiguration", page = ""}. Executing controller action with signature System.Threading.Tasks.Task`1[Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationConfigurationDto] GetAsync(Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationConfigurationRequestOptions) on controller Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.AbpApplicationConfigurationController (Volo.Abp.AspNetCore.Mvc).
+2025-11-01 23:10:41.472 +08:00 [WRN] The cookie 'XSRF-TOKEN' has set 'SameSite=None' and must also set 'Secure'.
+2025-11-01 23:10:43.202 +08:00 [INF] Executing ObjectResult, writing value of type 'Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationConfigurationDto'.
+2025-11-01 23:10:43.217 +08:00 [INF] Executed action Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.AbpApplicationConfigurationController.GetAsync (Volo.Abp.AspNetCore.Mvc) in 1784.1141ms
+2025-11-01 23:10:43.217 +08:00 [INF] Executed endpoint 'Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.AbpApplicationConfigurationController.GetAsync (Volo.Abp.AspNetCore.Mvc)'
+2025-11-01 23:10:43.400 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:44354/api/abp/application-configuration - 200 null application/json; charset=utf-8 1975.4364ms
+2025-11-01 23:10:44.350 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:44354/abp/Swashbuckle/SetCsrfCookie - null null
+2025-11-01 23:10:44.355 +08:00 [INF] Executing endpoint 'Volo.Abp.Swashbuckle.AbpSwashbuckleController.SetCsrfCookie (Volo.Abp.Swashbuckle)'
+2025-11-01 23:10:44.357 +08:00 [INF] Route matched with {area = "Abp", action = "SetCsrfCookie", controller = "AbpSwashbuckle", page = ""}. Executing controller action with signature Void SetCsrfCookie() on controller Volo.Abp.Swashbuckle.AbpSwashbuckleController (Volo.Abp.Swashbuckle).
+2025-11-01 23:10:44.363 +08:00 [WRN] The cookie 'XSRF-TOKEN' has set 'SameSite=None' and must also set 'Secure'.
+2025-11-01 23:10:44.363 +08:00 [INF] Executed action Volo.Abp.Swashbuckle.AbpSwashbuckleController.SetCsrfCookie (Volo.Abp.Swashbuckle) in 5.6257ms
+2025-11-01 23:10:44.363 +08:00 [INF] Executed endpoint 'Volo.Abp.Swashbuckle.AbpSwashbuckleController.SetCsrfCookie (Volo.Abp.Swashbuckle)'
+2025-11-01 23:10:44.363 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:44354/abp/Swashbuckle/SetCsrfCookie - 204 null null 13.5266ms
+2025-11-01 23:28:55.612 +08:00 [INF] Starting KonSoft.Admin.HttpApi.Host.
+2025-11-01 23:28:57.886 +08:00 [INF] Loaded ABP modules:
+2025-11-01 23:28:57.887 +08:00 [INF] - KonSoft.Admin.AdminHttpApiHostModule
+2025-11-01 23:28:57.887 +08:00 [INF] - KonSoft.Admin.AdminHttpApiModule
+2025-11-01 23:28:57.887 +08:00 [INF] - KonSoft.Admin.AdminApplicationContractsModule
+2025-11-01 23:28:57.887 +08:00 [INF] - KonSoft.Admin.AdminDomainSharedModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.AuditLogging.AbpAuditLoggingDomainSharedModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.Validation.AbpValidationModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.Validation.AbpValidationAbstractionsModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.Localization.AbpLocalizationModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.VirtualFileSystem.AbpVirtualFileSystemModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.Settings.AbpSettingsModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.Localization.AbpLocalizationAbstractionsModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.Security.AbpSecurityModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.Data.AbpDataModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.ObjectExtending.AbpObjectExtendingModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.Uow.AbpUnitOfWorkModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.EventBus.Abstractions.AbpEventBusAbstractionsModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.Threading.AbpThreadingModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainSharedModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementDomainSharedModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.Json.SystemTextJson.AbpJsonSystemTextJsonModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.Json.AbpJsonAbstractionsModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.Timing.AbpTimingModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityDomainSharedModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.Users.AbpUsersDomainSharedModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.Features.AbpFeaturesModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.MultiTenancy.AbpMultiTenancyModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.MultiTenancy.AbpMultiTenancyAbstractionsModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.Authorization.AbpAuthorizationAbstractionsModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictDomainSharedModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementDomainSharedModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementDomainSharedModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementDomainSharedModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.Account.AbpAccountApplicationContractsModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityApplicationContractsModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.Users.AbpUsersAbstractionModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.EventBus.AbpEventBusModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.Json.AbpJsonModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.Guids.AbpGuidsModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.BackgroundWorkers.AbpBackgroundWorkersModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.DistributedLocking.AbpDistributedLockingAbstractionsModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.Authorization.AbpAuthorizationModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementApplicationContractsModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.Application.AbpDddApplicationContractsModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.Auditing.AbpAuditingContractsModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementApplicationContractsModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementApplicationContractsModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementApplicationContractsModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.Account.AbpAccountHttpApiModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityHttpApiModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.AbpAspNetCoreMvcModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.AspNetCore.AbpAspNetCoreModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.Auditing.AbpAuditingModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.Http.AbpHttpModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.Http.AbpHttpAbstractionsModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.Minify.AbpMinifyModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.ExceptionHandling.AbpExceptionHandlingModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.AspNetCore.AbpAspNetCoreAbstractionsModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.ApiVersioning.AbpApiVersioningAbstractionsModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.AbpAspNetCoreMvcContractsModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.UI.Navigation.AbpUiNavigationModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.UI.AbpUiModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.GlobalFeatures.AbpGlobalFeaturesModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.Application.AbpDddApplicationModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.Domain.AbpDddDomainModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.ObjectMapping.AbpObjectMappingModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.Specifications.AbpSpecificationsModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.Caching.AbpCachingModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.Serialization.AbpSerializationModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.Domain.AbpDddDomainSharedModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.PermissionManagement.HttpApi.AbpPermissionManagementHttpApiModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementHttpApiModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementHttpApiModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementHttpApiModule
+2025-11-01 23:28:57.887 +08:00 [INF] - KonSoft.Admin.AdminApplicationModule
+2025-11-01 23:28:57.887 +08:00 [INF] - KonSoft.Admin.AdminDomainModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.AuditLogging.AbpAuditLoggingDomainModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsAbstractionsModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.AutoMapper.AbpAutoMapperModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementDomainModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityDomainModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.Users.AbpUsersDomainModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictDomainModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.PermissionManagement.OpenIddict.AbpPermissionManagementDomainOpenIddictModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementDomainModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.PermissionManagement.Identity.AbpPermissionManagementDomainIdentityModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementDomainModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementDomainModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.Emailing.AbpEmailingModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.TextTemplating.AbpTextTemplatingModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.TextTemplating.Scriban.AbpTextTemplatingScribanModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.TextTemplating.AbpTextTemplatingCoreModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.Account.AbpAccountApplicationModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityApplicationModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementApplicationModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementApplicationModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementApplicationModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementApplicationModule
+2025-11-01 23:28:57.887 +08:00 [INF] - KonSoft.Admin.EntityFrameworkCore.AdminEntityFrameworkCoreModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.Identity.EntityFrameworkCore.AbpIdentityEntityFrameworkCoreModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.Users.EntityFrameworkCore.AbpUsersEntityFrameworkCoreModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.EntityFrameworkCore.AbpEntityFrameworkCoreModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.OpenIddict.EntityFrameworkCore.AbpOpenIddictEntityFrameworkCoreModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.PermissionManagement.EntityFrameworkCore.AbpPermissionManagementEntityFrameworkCoreModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.SettingManagement.EntityFrameworkCore.AbpSettingManagementEntityFrameworkCoreModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.EntityFrameworkCore.PostgreSql.AbpEntityFrameworkCorePostgreSqlModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.BackgroundJobs.EntityFrameworkCore.AbpBackgroundJobsEntityFrameworkCoreModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.AuditLogging.EntityFrameworkCore.AbpAuditLoggingEntityFrameworkCoreModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.TenantManagement.EntityFrameworkCore.AbpTenantManagementEntityFrameworkCoreModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.FeatureManagement.EntityFrameworkCore.AbpFeatureManagementEntityFrameworkCoreModule
+2025-11-01 23:28:57.887 +08:00 [INF] - KonSoft.Shared.Hosting.Microservices.KonSoftSharedHostingMicroservicesModule
+2025-11-01 23:28:57.887 +08:00 [INF] - KonSoft.Shared.Hosting.AspNetCore.KonSoftSharedHostingAspNetCoreModule
+2025-11-01 23:28:57.887 +08:00 [INF] - KonSoft.Shared.Localization.KonSoftSharedLocalizationModule
+2025-11-01 23:28:57.887 +08:00 [INF] - KonSoft.Shared.Hosting.KonSoftSharedHostingModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.Autofac.AbpAutofacModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.Castle.AbpCastleCoreModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.AspNetCore.Serilog.AbpAspNetCoreSerilogModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.Swashbuckle.AbpSwashbuckleModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.BackgroundJobs.RabbitMQ.AbpBackgroundJobsRabbitMqModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.RabbitMQ.AbpRabbitMqModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.AspNetCore.Authentication.JwtBearer.AbpAspNetCoreAuthenticationJwtBearerModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.EventBus.RabbitMq.AbpEventBusRabbitMqModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.Caching.StackExchangeRedis.AbpCachingStackExchangeRedisModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.DistributedLocking.AbpDistributedLockingModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy.AbpAspNetCoreMvcUiMultiTenancyModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.AbpAspNetCoreMvcUiThemeSharedModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.AbpAspNetCoreMvcUiBootstrapModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.AbpAspNetCoreMvcUiModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Packages.AbpAspNetCoreMvcUiPackagesModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bundling.AbpAspNetCoreMvcUiBundlingAbstractionsModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Widgets.AbpAspNetCoreMvcUiWidgetsModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bundling.AbpAspNetCoreMvcUiBundlingModule
+2025-11-01 23:28:57.887 +08:00 [INF] - Volo.Abp.AspNetCore.MultiTenancy.AbpAspNetCoreMultiTenancyModule
+2025-11-01 23:28:58.462 +08:00 [INF] Initialized all ABP modules.
+2025-11-01 23:28:58.692 +08:00 [INF] Now listening on: https://localhost:44354
+2025-11-01 23:28:58.742 +08:00 [INF] Application started. Press Ctrl+C to shut down.
+2025-11-01 23:28:58.742 +08:00 [INF] Hosting environment: Development
+2025-11-01 23:28:58.742 +08:00 [INF] Content root path: C:\Users\Administrator\source\repos\KonSoft.Clean\microservices\KonSoft.Admin.HttpApi.Host
+2025-11-01 23:29:02.842 +08:00 [INF] Starting KonSoft.Admin.HttpApi.Host.
+2025-11-01 23:29:04.950 +08:00 [INF] Loaded ABP modules:
+2025-11-01 23:29:04.951 +08:00 [INF] - KonSoft.Admin.AdminHttpApiHostModule
+2025-11-01 23:29:04.951 +08:00 [INF] - KonSoft.Admin.AdminHttpApiModule
+2025-11-01 23:29:04.951 +08:00 [INF] - KonSoft.Admin.AdminApplicationContractsModule
+2025-11-01 23:29:04.951 +08:00 [INF] - KonSoft.Admin.AdminDomainSharedModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.AuditLogging.AbpAuditLoggingDomainSharedModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.Validation.AbpValidationModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.Validation.AbpValidationAbstractionsModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.Localization.AbpLocalizationModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.VirtualFileSystem.AbpVirtualFileSystemModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.Settings.AbpSettingsModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.Localization.AbpLocalizationAbstractionsModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.Security.AbpSecurityModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.Data.AbpDataModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.ObjectExtending.AbpObjectExtendingModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.Uow.AbpUnitOfWorkModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.EventBus.Abstractions.AbpEventBusAbstractionsModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.Threading.AbpThreadingModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainSharedModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementDomainSharedModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.Json.SystemTextJson.AbpJsonSystemTextJsonModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.Json.AbpJsonAbstractionsModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.Timing.AbpTimingModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityDomainSharedModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.Users.AbpUsersDomainSharedModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.Features.AbpFeaturesModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.MultiTenancy.AbpMultiTenancyModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.MultiTenancy.AbpMultiTenancyAbstractionsModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.Authorization.AbpAuthorizationAbstractionsModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictDomainSharedModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementDomainSharedModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementDomainSharedModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementDomainSharedModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.Account.AbpAccountApplicationContractsModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityApplicationContractsModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.Users.AbpUsersAbstractionModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.EventBus.AbpEventBusModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.Json.AbpJsonModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.Guids.AbpGuidsModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.BackgroundWorkers.AbpBackgroundWorkersModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.DistributedLocking.AbpDistributedLockingAbstractionsModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.Authorization.AbpAuthorizationModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementApplicationContractsModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.Application.AbpDddApplicationContractsModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.Auditing.AbpAuditingContractsModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementApplicationContractsModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementApplicationContractsModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementApplicationContractsModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.Account.AbpAccountHttpApiModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityHttpApiModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.AbpAspNetCoreMvcModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.AspNetCore.AbpAspNetCoreModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.Auditing.AbpAuditingModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.Http.AbpHttpModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.Http.AbpHttpAbstractionsModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.Minify.AbpMinifyModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.ExceptionHandling.AbpExceptionHandlingModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.AspNetCore.AbpAspNetCoreAbstractionsModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.ApiVersioning.AbpApiVersioningAbstractionsModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.AbpAspNetCoreMvcContractsModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.UI.Navigation.AbpUiNavigationModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.UI.AbpUiModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.GlobalFeatures.AbpGlobalFeaturesModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.Application.AbpDddApplicationModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.Domain.AbpDddDomainModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.ObjectMapping.AbpObjectMappingModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.Specifications.AbpSpecificationsModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.Caching.AbpCachingModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.Serialization.AbpSerializationModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.Domain.AbpDddDomainSharedModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.PermissionManagement.HttpApi.AbpPermissionManagementHttpApiModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementHttpApiModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementHttpApiModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementHttpApiModule
+2025-11-01 23:29:04.951 +08:00 [INF] - KonSoft.Admin.AdminApplicationModule
+2025-11-01 23:29:04.951 +08:00 [INF] - KonSoft.Admin.AdminDomainModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.AuditLogging.AbpAuditLoggingDomainModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsAbstractionsModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.AutoMapper.AbpAutoMapperModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementDomainModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityDomainModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.Users.AbpUsersDomainModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictDomainModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.PermissionManagement.OpenIddict.AbpPermissionManagementDomainOpenIddictModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementDomainModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.PermissionManagement.Identity.AbpPermissionManagementDomainIdentityModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementDomainModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementDomainModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.Emailing.AbpEmailingModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.TextTemplating.AbpTextTemplatingModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.TextTemplating.Scriban.AbpTextTemplatingScribanModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.TextTemplating.AbpTextTemplatingCoreModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.Account.AbpAccountApplicationModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityApplicationModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementApplicationModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementApplicationModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementApplicationModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementApplicationModule
+2025-11-01 23:29:04.951 +08:00 [INF] - KonSoft.Admin.EntityFrameworkCore.AdminEntityFrameworkCoreModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.Identity.EntityFrameworkCore.AbpIdentityEntityFrameworkCoreModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.Users.EntityFrameworkCore.AbpUsersEntityFrameworkCoreModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.EntityFrameworkCore.AbpEntityFrameworkCoreModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.OpenIddict.EntityFrameworkCore.AbpOpenIddictEntityFrameworkCoreModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.PermissionManagement.EntityFrameworkCore.AbpPermissionManagementEntityFrameworkCoreModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.SettingManagement.EntityFrameworkCore.AbpSettingManagementEntityFrameworkCoreModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.EntityFrameworkCore.PostgreSql.AbpEntityFrameworkCorePostgreSqlModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.BackgroundJobs.EntityFrameworkCore.AbpBackgroundJobsEntityFrameworkCoreModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.AuditLogging.EntityFrameworkCore.AbpAuditLoggingEntityFrameworkCoreModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.TenantManagement.EntityFrameworkCore.AbpTenantManagementEntityFrameworkCoreModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.FeatureManagement.EntityFrameworkCore.AbpFeatureManagementEntityFrameworkCoreModule
+2025-11-01 23:29:04.951 +08:00 [INF] - KonSoft.Shared.Hosting.Microservices.KonSoftSharedHostingMicroservicesModule
+2025-11-01 23:29:04.951 +08:00 [INF] - KonSoft.Shared.Hosting.AspNetCore.KonSoftSharedHostingAspNetCoreModule
+2025-11-01 23:29:04.951 +08:00 [INF] - KonSoft.Shared.Localization.KonSoftSharedLocalizationModule
+2025-11-01 23:29:04.951 +08:00 [INF] - KonSoft.Shared.Hosting.KonSoftSharedHostingModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.Autofac.AbpAutofacModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.Castle.AbpCastleCoreModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.AspNetCore.Serilog.AbpAspNetCoreSerilogModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.Swashbuckle.AbpSwashbuckleModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.BackgroundJobs.RabbitMQ.AbpBackgroundJobsRabbitMqModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.RabbitMQ.AbpRabbitMqModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.AspNetCore.Authentication.JwtBearer.AbpAspNetCoreAuthenticationJwtBearerModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.EventBus.RabbitMq.AbpEventBusRabbitMqModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.Caching.StackExchangeRedis.AbpCachingStackExchangeRedisModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.DistributedLocking.AbpDistributedLockingModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy.AbpAspNetCoreMvcUiMultiTenancyModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.AbpAspNetCoreMvcUiThemeSharedModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.AbpAspNetCoreMvcUiBootstrapModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.AbpAspNetCoreMvcUiModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Packages.AbpAspNetCoreMvcUiPackagesModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bundling.AbpAspNetCoreMvcUiBundlingAbstractionsModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Widgets.AbpAspNetCoreMvcUiWidgetsModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bundling.AbpAspNetCoreMvcUiBundlingModule
+2025-11-01 23:29:04.951 +08:00 [INF] - Volo.Abp.AspNetCore.MultiTenancy.AbpAspNetCoreMultiTenancyModule
+2025-11-01 23:29:05.472 +08:00 [INF] Initialized all ABP modules.
+2025-11-01 23:29:05.678 +08:00 [INF] Now listening on: http://localhost:44354
+2025-11-01 23:29:05.731 +08:00 [INF] Application started. Press Ctrl+C to shut down.
+2025-11-01 23:29:05.731 +08:00 [INF] Hosting environment: Development
+2025-11-01 23:29:05.731 +08:00 [INF] Content root path: C:\Users\Administrator\source\repos\KonSoft.Clean\microservices\KonSoft.Admin.HttpApi.Host
+2025-11-01 23:29:32.663 +08:00 [INF] Starting KonSoft.Admin.HttpApi.Host.
+2025-11-01 23:29:34.810 +08:00 [INF] Loaded ABP modules:
+2025-11-01 23:29:34.810 +08:00 [INF] - KonSoft.Admin.AdminHttpApiHostModule
+2025-11-01 23:29:34.810 +08:00 [INF] - KonSoft.Admin.AdminHttpApiModule
+2025-11-01 23:29:34.810 +08:00 [INF] - KonSoft.Admin.AdminApplicationContractsModule
+2025-11-01 23:29:34.810 +08:00 [INF] - KonSoft.Admin.AdminDomainSharedModule
+2025-11-01 23:29:34.810 +08:00 [INF] - Volo.Abp.AuditLogging.AbpAuditLoggingDomainSharedModule
+2025-11-01 23:29:34.810 +08:00 [INF] - Volo.Abp.Validation.AbpValidationModule
+2025-11-01 23:29:34.810 +08:00 [INF] - Volo.Abp.Validation.AbpValidationAbstractionsModule
+2025-11-01 23:29:34.810 +08:00 [INF] - Volo.Abp.Localization.AbpLocalizationModule
+2025-11-01 23:29:34.810 +08:00 [INF] - Volo.Abp.VirtualFileSystem.AbpVirtualFileSystemModule
+2025-11-01 23:29:34.810 +08:00 [INF] - Volo.Abp.Settings.AbpSettingsModule
+2025-11-01 23:29:34.810 +08:00 [INF] - Volo.Abp.Localization.AbpLocalizationAbstractionsModule
+2025-11-01 23:29:34.810 +08:00 [INF] - Volo.Abp.Security.AbpSecurityModule
+2025-11-01 23:29:34.810 +08:00 [INF] - Volo.Abp.Data.AbpDataModule
+2025-11-01 23:29:34.810 +08:00 [INF] - Volo.Abp.ObjectExtending.AbpObjectExtendingModule
+2025-11-01 23:29:34.810 +08:00 [INF] - Volo.Abp.Uow.AbpUnitOfWorkModule
+2025-11-01 23:29:34.810 +08:00 [INF] - Volo.Abp.EventBus.Abstractions.AbpEventBusAbstractionsModule
+2025-11-01 23:29:34.810 +08:00 [INF] - Volo.Abp.Threading.AbpThreadingModule
+2025-11-01 23:29:34.810 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainSharedModule
+2025-11-01 23:29:34.810 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementDomainSharedModule
+2025-11-01 23:29:34.810 +08:00 [INF] - Volo.Abp.Json.SystemTextJson.AbpJsonSystemTextJsonModule
+2025-11-01 23:29:34.810 +08:00 [INF] - Volo.Abp.Json.AbpJsonAbstractionsModule
+2025-11-01 23:29:34.810 +08:00 [INF] - Volo.Abp.Timing.AbpTimingModule
+2025-11-01 23:29:34.810 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityDomainSharedModule
+2025-11-01 23:29:34.810 +08:00 [INF] - Volo.Abp.Users.AbpUsersDomainSharedModule
+2025-11-01 23:29:34.810 +08:00 [INF] - Volo.Abp.Features.AbpFeaturesModule
+2025-11-01 23:29:34.810 +08:00 [INF] - Volo.Abp.MultiTenancy.AbpMultiTenancyModule
+2025-11-01 23:29:34.810 +08:00 [INF] - Volo.Abp.MultiTenancy.AbpMultiTenancyAbstractionsModule
+2025-11-01 23:29:34.810 +08:00 [INF] - Volo.Abp.Authorization.AbpAuthorizationAbstractionsModule
+2025-11-01 23:29:34.810 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictDomainSharedModule
+2025-11-01 23:29:34.810 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementDomainSharedModule
+2025-11-01 23:29:34.810 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementDomainSharedModule
+2025-11-01 23:29:34.810 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementDomainSharedModule
+2025-11-01 23:29:34.810 +08:00 [INF] - Volo.Abp.Account.AbpAccountApplicationContractsModule
+2025-11-01 23:29:34.810 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityApplicationContractsModule
+2025-11-01 23:29:34.810 +08:00 [INF] - Volo.Abp.Users.AbpUsersAbstractionModule
+2025-11-01 23:29:34.810 +08:00 [INF] - Volo.Abp.EventBus.AbpEventBusModule
+2025-11-01 23:29:34.810 +08:00 [INF] - Volo.Abp.Json.AbpJsonModule
+2025-11-01 23:29:34.810 +08:00 [INF] - Volo.Abp.Guids.AbpGuidsModule
+2025-11-01 23:29:34.810 +08:00 [INF] - Volo.Abp.BackgroundWorkers.AbpBackgroundWorkersModule
+2025-11-01 23:29:34.810 +08:00 [INF] - Volo.Abp.DistributedLocking.AbpDistributedLockingAbstractionsModule
+2025-11-01 23:29:34.810 +08:00 [INF] - Volo.Abp.Authorization.AbpAuthorizationModule
+2025-11-01 23:29:34.810 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementApplicationContractsModule
+2025-11-01 23:29:34.810 +08:00 [INF] - Volo.Abp.Application.AbpDddApplicationContractsModule
+2025-11-01 23:29:34.810 +08:00 [INF] - Volo.Abp.Auditing.AbpAuditingContractsModule
+2025-11-01 23:29:34.810 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementApplicationContractsModule
+2025-11-01 23:29:34.810 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementApplicationContractsModule
+2025-11-01 23:29:34.810 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementApplicationContractsModule
+2025-11-01 23:29:34.810 +08:00 [INF] - Volo.Abp.Account.AbpAccountHttpApiModule
+2025-11-01 23:29:34.810 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityHttpApiModule
+2025-11-01 23:29:34.810 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.AbpAspNetCoreMvcModule
+2025-11-01 23:29:34.810 +08:00 [INF] - Volo.Abp.AspNetCore.AbpAspNetCoreModule
+2025-11-01 23:29:34.810 +08:00 [INF] - Volo.Abp.Auditing.AbpAuditingModule
+2025-11-01 23:29:34.810 +08:00 [INF] - Volo.Abp.Http.AbpHttpModule
+2025-11-01 23:29:34.810 +08:00 [INF] - Volo.Abp.Http.AbpHttpAbstractionsModule
+2025-11-01 23:29:34.810 +08:00 [INF] - Volo.Abp.Minify.AbpMinifyModule
+2025-11-01 23:29:34.810 +08:00 [INF] - Volo.Abp.ExceptionHandling.AbpExceptionHandlingModule
+2025-11-01 23:29:34.810 +08:00 [INF] - Volo.Abp.AspNetCore.AbpAspNetCoreAbstractionsModule
+2025-11-01 23:29:34.810 +08:00 [INF] - Volo.Abp.ApiVersioning.AbpApiVersioningAbstractionsModule
+2025-11-01 23:29:34.810 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.AbpAspNetCoreMvcContractsModule
+2025-11-01 23:29:34.810 +08:00 [INF] - Volo.Abp.UI.Navigation.AbpUiNavigationModule
+2025-11-01 23:29:34.810 +08:00 [INF] - Volo.Abp.UI.AbpUiModule
+2025-11-01 23:29:34.810 +08:00 [INF] - Volo.Abp.GlobalFeatures.AbpGlobalFeaturesModule
+2025-11-01 23:29:34.810 +08:00 [INF] - Volo.Abp.Application.AbpDddApplicationModule
+2025-11-01 23:29:34.810 +08:00 [INF] - Volo.Abp.Domain.AbpDddDomainModule
+2025-11-01 23:29:34.810 +08:00 [INF] - Volo.Abp.ObjectMapping.AbpObjectMappingModule
+2025-11-01 23:29:34.810 +08:00 [INF] - Volo.Abp.Specifications.AbpSpecificationsModule
+2025-11-01 23:29:34.811 +08:00 [INF] - Volo.Abp.Caching.AbpCachingModule
+2025-11-01 23:29:34.811 +08:00 [INF] - Volo.Abp.Serialization.AbpSerializationModule
+2025-11-01 23:29:34.811 +08:00 [INF] - Volo.Abp.Domain.AbpDddDomainSharedModule
+2025-11-01 23:29:34.811 +08:00 [INF] - Volo.Abp.PermissionManagement.HttpApi.AbpPermissionManagementHttpApiModule
+2025-11-01 23:29:34.811 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementHttpApiModule
+2025-11-01 23:29:34.811 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementHttpApiModule
+2025-11-01 23:29:34.811 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementHttpApiModule
+2025-11-01 23:29:34.811 +08:00 [INF] - KonSoft.Admin.AdminApplicationModule
+2025-11-01 23:29:34.811 +08:00 [INF] - KonSoft.Admin.AdminDomainModule
+2025-11-01 23:29:34.811 +08:00 [INF] - Volo.Abp.AuditLogging.AbpAuditLoggingDomainModule
+2025-11-01 23:29:34.811 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule
+2025-11-01 23:29:34.811 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsModule
+2025-11-01 23:29:34.811 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsAbstractionsModule
+2025-11-01 23:29:34.811 +08:00 [INF] - Volo.Abp.AutoMapper.AbpAutoMapperModule
+2025-11-01 23:29:34.811 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementDomainModule
+2025-11-01 23:29:34.811 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityDomainModule
+2025-11-01 23:29:34.811 +08:00 [INF] - Volo.Abp.Users.AbpUsersDomainModule
+2025-11-01 23:29:34.811 +08:00 [INF] - Volo.Abp.OpenIddict.AbpOpenIddictDomainModule
+2025-11-01 23:29:34.811 +08:00 [INF] - Volo.Abp.PermissionManagement.OpenIddict.AbpPermissionManagementDomainOpenIddictModule
+2025-11-01 23:29:34.811 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementDomainModule
+2025-11-01 23:29:34.811 +08:00 [INF] - Volo.Abp.PermissionManagement.Identity.AbpPermissionManagementDomainIdentityModule
+2025-11-01 23:29:34.811 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementDomainModule
+2025-11-01 23:29:34.811 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementDomainModule
+2025-11-01 23:29:34.811 +08:00 [INF] - Volo.Abp.Emailing.AbpEmailingModule
+2025-11-01 23:29:34.811 +08:00 [INF] - Volo.Abp.TextTemplating.AbpTextTemplatingModule
+2025-11-01 23:29:34.811 +08:00 [INF] - Volo.Abp.TextTemplating.Scriban.AbpTextTemplatingScribanModule
+2025-11-01 23:29:34.811 +08:00 [INF] - Volo.Abp.TextTemplating.AbpTextTemplatingCoreModule
+2025-11-01 23:29:34.811 +08:00 [INF] - Volo.Abp.Account.AbpAccountApplicationModule
+2025-11-01 23:29:34.811 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityApplicationModule
+2025-11-01 23:29:34.811 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementApplicationModule
+2025-11-01 23:29:34.811 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementApplicationModule
+2025-11-01 23:29:34.811 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementApplicationModule
+2025-11-01 23:29:34.811 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementApplicationModule
+2025-11-01 23:29:34.811 +08:00 [INF] - KonSoft.Admin.EntityFrameworkCore.AdminEntityFrameworkCoreModule
+2025-11-01 23:29:34.811 +08:00 [INF] - Volo.Abp.Identity.EntityFrameworkCore.AbpIdentityEntityFrameworkCoreModule
+2025-11-01 23:29:34.811 +08:00 [INF] - Volo.Abp.Users.EntityFrameworkCore.AbpUsersEntityFrameworkCoreModule
+2025-11-01 23:29:34.811 +08:00 [INF] - Volo.Abp.EntityFrameworkCore.AbpEntityFrameworkCoreModule
+2025-11-01 23:29:34.811 +08:00 [INF] - Volo.Abp.OpenIddict.EntityFrameworkCore.AbpOpenIddictEntityFrameworkCoreModule
+2025-11-01 23:29:34.811 +08:00 [INF] - Volo.Abp.PermissionManagement.EntityFrameworkCore.AbpPermissionManagementEntityFrameworkCoreModule
+2025-11-01 23:29:34.811 +08:00 [INF] - Volo.Abp.SettingManagement.EntityFrameworkCore.AbpSettingManagementEntityFrameworkCoreModule
+2025-11-01 23:29:34.811 +08:00 [INF] - Volo.Abp.EntityFrameworkCore.PostgreSql.AbpEntityFrameworkCorePostgreSqlModule
+2025-11-01 23:29:34.811 +08:00 [INF] - Volo.Abp.BackgroundJobs.EntityFrameworkCore.AbpBackgroundJobsEntityFrameworkCoreModule
+2025-11-01 23:29:34.811 +08:00 [INF] - Volo.Abp.AuditLogging.EntityFrameworkCore.AbpAuditLoggingEntityFrameworkCoreModule
+2025-11-01 23:29:34.811 +08:00 [INF] - Volo.Abp.TenantManagement.EntityFrameworkCore.AbpTenantManagementEntityFrameworkCoreModule
+2025-11-01 23:29:34.811 +08:00 [INF] - Volo.Abp.FeatureManagement.EntityFrameworkCore.AbpFeatureManagementEntityFrameworkCoreModule
+2025-11-01 23:29:34.811 +08:00 [INF] - KonSoft.Shared.Hosting.Microservices.KonSoftSharedHostingMicroservicesModule
+2025-11-01 23:29:34.811 +08:00 [INF] - KonSoft.Shared.Hosting.AspNetCore.KonSoftSharedHostingAspNetCoreModule
+2025-11-01 23:29:34.811 +08:00 [INF] - KonSoft.Shared.Localization.KonSoftSharedLocalizationModule
+2025-11-01 23:29:34.811 +08:00 [INF] - KonSoft.Shared.Hosting.KonSoftSharedHostingModule
+2025-11-01 23:29:34.811 +08:00 [INF] - Volo.Abp.Autofac.AbpAutofacModule
+2025-11-01 23:29:34.811 +08:00 [INF] - Volo.Abp.Castle.AbpCastleCoreModule
+2025-11-01 23:29:34.811 +08:00 [INF] - Volo.Abp.AspNetCore.Serilog.AbpAspNetCoreSerilogModule
+2025-11-01 23:29:34.811 +08:00 [INF] - Volo.Abp.Swashbuckle.AbpSwashbuckleModule
+2025-11-01 23:29:34.811 +08:00 [INF] - Volo.Abp.BackgroundJobs.RabbitMQ.AbpBackgroundJobsRabbitMqModule
+2025-11-01 23:29:34.811 +08:00 [INF] - Volo.Abp.RabbitMQ.AbpRabbitMqModule
+2025-11-01 23:29:34.811 +08:00 [INF] - Volo.Abp.AspNetCore.Authentication.JwtBearer.AbpAspNetCoreAuthenticationJwtBearerModule
+2025-11-01 23:29:34.811 +08:00 [INF] - Volo.Abp.EventBus.RabbitMq.AbpEventBusRabbitMqModule
+2025-11-01 23:29:34.811 +08:00 [INF] - Volo.Abp.Caching.StackExchangeRedis.AbpCachingStackExchangeRedisModule
+2025-11-01 23:29:34.811 +08:00 [INF] - Volo.Abp.DistributedLocking.AbpDistributedLockingModule
+2025-11-01 23:29:34.811 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy.AbpAspNetCoreMvcUiMultiTenancyModule
+2025-11-01 23:29:34.811 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.AbpAspNetCoreMvcUiThemeSharedModule
+2025-11-01 23:29:34.811 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.AbpAspNetCoreMvcUiBootstrapModule
+2025-11-01 23:29:34.811 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.AbpAspNetCoreMvcUiModule
+2025-11-01 23:29:34.811 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Packages.AbpAspNetCoreMvcUiPackagesModule
+2025-11-01 23:29:34.811 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bundling.AbpAspNetCoreMvcUiBundlingAbstractionsModule
+2025-11-01 23:29:34.811 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Widgets.AbpAspNetCoreMvcUiWidgetsModule
+2025-11-01 23:29:34.811 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bundling.AbpAspNetCoreMvcUiBundlingModule
+2025-11-01 23:29:34.811 +08:00 [INF] - Volo.Abp.AspNetCore.MultiTenancy.AbpAspNetCoreMultiTenancyModule
+2025-11-01 23:29:35.475 +08:00 [INF] Initialized all ABP modules.
+2025-11-01 23:29:35.691 +08:00 [INF] Now listening on: http://localhost:44354
+2025-11-01 23:29:35.759 +08:00 [INF] Application started. Press Ctrl+C to shut down.
+2025-11-01 23:29:35.759 +08:00 [INF] Hosting environment: Development
+2025-11-01 23:29:35.759 +08:00 [INF] Content root path: C:\Users\Administrator\source\repos\KonSoft.Clean\microservices\KonSoft.Admin.HttpApi.Host
+2025-11-01 23:29:36.783 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:44354/swagger/index.html - null null
+2025-11-01 23:29:37.656 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:44354/swagger/index.html - 200 null text/html;charset=utf-8 872.8863ms
+2025-11-01 23:29:37.677 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:44354/_framework/aspnetcore-browser-refresh.js - null null
+2025-11-01 23:29:37.678 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:44354/_framework/aspnetcore-browser-refresh.js - 200 16537 application/javascript; charset=utf-8 1.1399ms
+2025-11-01 23:29:37.681 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:44354/_vs/browserLink - null null
+2025-11-01 23:29:37.698 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:44354/_vs/browserLink - 200 null text/javascript; charset=UTF-8 16.2384ms
+2025-11-01 23:29:37.964 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:44354/swagger/v1/swagger.json - null null
+2025-11-01 23:29:38.115 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:44354/swagger/v1/swagger.json - 200 null application/json;charset=utf-8 150.774ms
+2025-11-01 23:29:38.126 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:44354/api/abp/application-configuration - null null
+2025-11-01 23:29:38.181 +08:00 [INF] Executing endpoint 'Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.AbpApplicationConfigurationController.GetAsync (Volo.Abp.AspNetCore.Mvc)'
+2025-11-01 23:29:38.198 +08:00 [INF] Route matched with {area = "abp", action = "Get", controller = "AbpApplicationConfiguration", page = ""}. Executing controller action with signature System.Threading.Tasks.Task`1[Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationConfigurationDto] GetAsync(Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationConfigurationRequestOptions) on controller Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.AbpApplicationConfigurationController (Volo.Abp.AspNetCore.Mvc).
+2025-11-01 23:29:38.244 +08:00 [WRN] The cookie 'XSRF-TOKEN' has set 'SameSite=None' and must also set 'Secure'.
+2025-11-01 23:29:40.232 +08:00 [INF] Executing ObjectResult, writing value of type 'Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationConfigurationDto'.
+2025-11-01 23:29:40.247 +08:00 [INF] Executed action Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.AbpApplicationConfigurationController.GetAsync (Volo.Abp.AspNetCore.Mvc) in 2047.1243ms
+2025-11-01 23:29:40.247 +08:00 [INF] Executed endpoint 'Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.AbpApplicationConfigurationController.GetAsync (Volo.Abp.AspNetCore.Mvc)'
+2025-11-01 23:29:40.248 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:44354/api/abp/application-configuration - 200 null application/json; charset=utf-8 2121.9523ms
+2025-11-01 23:29:41.322 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:44354/abp/Swashbuckle/SetCsrfCookie - null null
+2025-11-01 23:29:41.324 +08:00 [INF] Executing endpoint 'Volo.Abp.Swashbuckle.AbpSwashbuckleController.SetCsrfCookie (Volo.Abp.Swashbuckle)'
+2025-11-01 23:29:41.325 +08:00 [INF] Route matched with {area = "Abp", action = "SetCsrfCookie", controller = "AbpSwashbuckle", page = ""}. Executing controller action with signature Void SetCsrfCookie() on controller Volo.Abp.Swashbuckle.AbpSwashbuckleController (Volo.Abp.Swashbuckle).
+2025-11-01 23:29:41.326 +08:00 [WRN] The cookie 'XSRF-TOKEN' has set 'SameSite=None' and must also set 'Secure'.
+2025-11-01 23:29:41.327 +08:00 [INF] Executed action Volo.Abp.Swashbuckle.AbpSwashbuckleController.SetCsrfCookie (Volo.Abp.Swashbuckle) in 1.6838ms
+2025-11-01 23:29:41.327 +08:00 [INF] Executed endpoint 'Volo.Abp.Swashbuckle.AbpSwashbuckleController.SetCsrfCookie (Volo.Abp.Swashbuckle)'
+2025-11-01 23:29:41.327 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:44354/abp/Swashbuckle/SetCsrfCookie - 204 null null 4.6319ms
diff --git a/shared/KonSoft.Shared.Hosting.Gateways/AbpHostingHostBuilderExtensions.cs b/shared/KonSoft.Shared.Hosting.Gateways/AbpHostingHostBuilderExtensions.cs
new file mode 100644
index 0000000..a716374
--- /dev/null
+++ b/shared/KonSoft.Shared.Hosting.Gateways/AbpHostingHostBuilderExtensions.cs
@@ -0,0 +1,27 @@
+using Microsoft.Extensions.Configuration;
+using Microsoft.Extensions.Hosting;
+
+namespace KonSoft.Shared.Hosting.Gateways
+{
+ public static class AbpHostingHostBuilderExtensions
+ {
+ public const string AppYarpJsonPath = "yarp.json";
+
+ public static IHostBuilder AddYarpJson(
+ this IHostBuilder hostBuilder,
+ bool optional = true,
+ bool reloadOnChange = true,
+ string path = AppYarpJsonPath)
+ {
+ return hostBuilder.ConfigureAppConfiguration((_, builder) =>
+ {
+ builder.AddJsonFile(
+ path: AppYarpJsonPath,
+ optional: optional,
+ reloadOnChange: reloadOnChange
+ )
+ .AddEnvironmentVariables();
+ });
+ }
+ }
+}
diff --git a/shared/KonSoft.Shared.Hosting.Gateways/KonSoft.Shared.Hosting.Gateways.csproj b/shared/KonSoft.Shared.Hosting.Gateways/KonSoft.Shared.Hosting.Gateways.csproj
index dc74281..a1b18d3 100644
--- a/shared/KonSoft.Shared.Hosting.Gateways/KonSoft.Shared.Hosting.Gateways.csproj
+++ b/shared/KonSoft.Shared.Hosting.Gateways/KonSoft.Shared.Hosting.Gateways.csproj
@@ -7,6 +7,8 @@
+
+
diff --git a/shared/KonSoft.Shared.Hosting.Gateways/KonSoftSharedHostingGatewaysModule.cs b/shared/KonSoft.Shared.Hosting.Gateways/KonSoftSharedHostingGatewaysModule.cs
index a412920..d9ad282 100644
--- a/shared/KonSoft.Shared.Hosting.Gateways/KonSoftSharedHostingGatewaysModule.cs
+++ b/shared/KonSoft.Shared.Hosting.Gateways/KonSoftSharedHostingGatewaysModule.cs
@@ -1,4 +1,5 @@
using KonSoft.Shared.Hosting.AspNetCore;
+using Microsoft.Extensions.DependencyInjection;
using Volo.Abp.Modularity;
namespace KonSoft.Shared.Hosting.Gateways;
@@ -8,4 +9,14 @@ namespace KonSoft.Shared.Hosting.Gateways;
)]
public class KonSoftSharedHostingGatewaysModule : AbpModule
{
+ public override void ConfigureServices(ServiceConfigurationContext context)
+ {
+ var configuration = context.Services.GetConfiguration();
+
+ context.Services.AddHttpForwarderWithServiceDiscovery();
+
+ context.Services.AddReverseProxy()
+ .LoadFromConfig(configuration.GetSection("ReverseProxy"))
+ .AddServiceDiscoveryDestinationResolver();
+ }
}
\ No newline at end of file
diff --git a/shared/KonSoft.Shared.Hosting.Gateways/YarpSwaggerUIBuilderExtensions.cs b/shared/KonSoft.Shared.Hosting.Gateways/YarpSwaggerUIBuilderExtensions.cs
new file mode 100644
index 0000000..ed034aa
--- /dev/null
+++ b/shared/KonSoft.Shared.Hosting.Gateways/YarpSwaggerUIBuilderExtensions.cs
@@ -0,0 +1,61 @@
+using KonSoft.Shared.Hosting.AspNetCore;
+using Microsoft.AspNetCore.Builder;
+using Microsoft.Extensions.Configuration;
+using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.Logging;
+using System;
+using System.Linq;
+using Volo.Abp;
+using Yarp.ReverseProxy.Configuration;
+
+namespace KonSoft.Shared.Hosting.Gateways
+{
+ public static class YarpSwaggerUIBuilderExtensions
+ {
+ public static IApplicationBuilder UseSwaggerUIWithYarp(this IApplicationBuilder app,
+ ApplicationInitializationContext context)
+ {
+ app.UseSwagger();
+ app.UseAbpSwaggerWithCustomScriptUI(options =>
+ {
+ var configuration = context.ServiceProvider.GetRequiredService();
+ var logger = context.ServiceProvider.GetRequiredService>();
+ var proxyConfigProvider = context.ServiceProvider.GetRequiredService();
+ var yarpConfig = proxyConfigProvider.GetConfig();
+
+ var routedClusters = yarpConfig.Clusters
+ .SelectMany(t => t.Destinations,
+ (clusterId, destination) => new { clusterId.ClusterId, destination.Value });
+
+ var groupedClusters = routedClusters
+ .GroupBy(q => q.Value.Address)
+ .Select(t => t.First())
+ .Distinct()
+ .ToList();
+
+ foreach (var clusterGroup in groupedClusters)
+ {
+ var routeConfig = yarpConfig.Routes.FirstOrDefault(q =>
+ q.ClusterId == clusterGroup.ClusterId);
+ if (routeConfig == null)
+ {
+ logger.LogWarning($"Swagger UI: Couldn't find route configuration for {clusterGroup.ClusterId}...");
+ continue;
+ }
+
+ var baseUrl = clusterGroup.Value.Address;
+
+ if (Convert.ToBoolean(configuration["App:IsOnK8s"])) // If the application is running on K8s, the swagger.json should be reached from public dns.
+ {
+ baseUrl = clusterGroup.Value.Metadata?["PublicAddress"];
+ }
+
+ options.SwaggerEndpoint($"{baseUrl}/swagger/v1/swagger.json", $"{routeConfig.RouteId} API");
+ options.OAuthClientId(configuration["AuthServer:SwaggerClientId"]);
+ }
+ });
+
+ return app;
+ }
+ }
+}