BTW, I have the idea why there could be a timeout. We have a custom configuration which adds so-called module permissions to the output. Please have a look, maybe you have the idea how to improve this. But one way or another, we need to get this information on client-side. I thought about using caching here in a more efficient way. But I'd prefer the permission information remained up-to-date and besides, it won't eliminate the cancellation during the first call (unless we warm-up the configuration data somehow in advance):
[Dependency(ReplaceServices = true)]
[ExposeServices(typeof(IAbpApplicationConfigurationAppService))]
public class ModulePermissionApplicationConfigurationAppService : AbpApplicationConfigurationAppService, IAbpApplicationConfigurationAppService
{
private readonly IPermissionGrantRepository _permissionGrantRepository;
private readonly IModulePermissionChecker _modulePermissionChecker;
public ModulePermissionApplicationConfigurationAppService
(
IPermissionGrantRepository permissionGrantRepository,
IModulePermissionChecker modulePermissionChecker,
IOptions<AbpLocalizationOptions> localizationOptions,
IOptions<AbpMultiTenancyOptions> multiTenancyOptions,
IServiceProvider serviceProvider,
IAbpAuthorizationPolicyProvider abpAuthorizationPolicyProvider,
IPermissionDefinitionManager permissionDefinitionManager,
DefaultAuthorizationPolicyProvider defaultAuthorizationPolicyProvider,
IPermissionChecker permissionChecker,
IAuthorizationService authorizationService,
ICurrentUser currentUser,
ISettingProvider settingProvider,
ISettingDefinitionManager settingDefinitionManager,
IFeatureDefinitionManager featureDefinitionManager,
ILanguageProvider languageProvider,
ITimezoneProvider timezoneProvider,
IOptions<AbpClockOptions> abpClockOptions,
ICachedObjectExtensionsDtoService cachedObjectExtensionsDtoService,
IOptions<AbpApplicationConfigurationOptions> options
) : base
(
localizationOptions,
multiTenancyOptions,
serviceProvider,
abpAuthorizationPolicyProvider,
permissionDefinitionManager,
defaultAuthorizationPolicyProvider,
permissionChecker,
authorizationService,
currentUser,
settingProvider,
settingDefinitionManager,
featureDefinitionManager,
languageProvider,
timezoneProvider,
abpClockOptions,
cachedObjectExtensionsDtoService,
options
)
{
_permissionGrantRepository = permissionGrantRepository;
_modulePermissionChecker = modulePermissionChecker;
}
public override async Task<ApplicationConfigurationDto> GetAsync(ApplicationConfigurationRequestOptions options)
{
var result = await base.GetAsync(options);
var moduleRoleNames = await _modulePermissionChecker.GetModuleRoleNamesAsync();
Dictionary<string, HashSet<string>> modulePermissionMap;
using (CurrentTenant.Change(null))
{
var moduleRolePermissionGrants = await _permissionGrantRepository.GetListAsync();
modulePermissionMap = moduleRoleNames
.GroupJoin
(
moduleRolePermissionGrants.Where(pg => pg.ProviderName == RolePermissionValueProvider.ProviderName),
moduleRoleName => moduleRoleName,
permissionGrant => permissionGrant.ProviderKey,
(moduleRoleName, permissionGrants) => (moduleRoleName, permissionGrantNames: permissionGrants.Select(x => x.Name))
)
.GroupBy(x => x.moduleRoleName.GetModuleId())
.Where(group => group.Key != null)
.ToDictionary(x => x.Key, x => x.SelectMany(moduleRolePermission => moduleRolePermission.permissionGrantNames).ToHashSet());
}
var ordinaryRolePermissionGrants = await _permissionGrantRepository.GetListAsync();
modulePermissionMap.Add
(
"_ordinaryRole",
CurrentUser.Roles
.GroupJoin
(
ordinaryRolePermissionGrants.Where(pg => pg.ProviderName == RolePermissionValueProvider.ProviderName),
ordinaryRoleName => ordinaryRoleName,
permissionGrant => permissionGrant.ProviderKey,
(ordinaryRoleName, permissionGrants) => (ordinaryRoleName, permissionGrantNames: permissionGrants.Select(x => x.Name))
)
.SelectMany(x => x.permissionGrantNames).ToHashSet()
);
result.ExtraProperties.Add("modulePermissionMap", modulePermissionMap);
return result;
}
}
public class ModulePermissionChecker : IModulePermissionChecker
{
private readonly IDistributedCache<ModulePermissionCacheItem> _modulePermissionCache;
private readonly IDistributedCache<AbpPermissionCacheItem> _abpPermissionCache;
private readonly IIdentityUserRepository _identityUserRepository;
private readonly IPermissionGrantRepository _permissionGrantRepository;
private readonly IPermissionDefinitionRecordRepository _permissionDefinitionRecordRepository;
private readonly ICurrentTenant _currentTenant;
private readonly ICurrentUser _currentUser;
private readonly int CacheExpirationDay = 1;
private string ModulePermissionCacheKey => $"ModulePermission:{_currentUser.Id}";
private string AbpPermissionCacheKey => $"AbpPermission:{_currentUser.Id}";
public ModulePermissionChecker
(
IIdentityUserRepository identityUserRepository,
IPermissionGrantRepository permissionGrantRepository,
IPermissionDefinitionRecordRepository permissionDefinitionRecordRepository,
IDistributedCache<ModulePermissionCacheItem> modulePermissionCache,
IDistributedCache<AbpPermissionCacheItem> abpPermissionCache,
ICurrentTenant currentTenant,
ICurrentUser currentUser
)
{
_identityUserRepository = identityUserRepository;
_permissionGrantRepository = permissionGrantRepository;
_permissionDefinitionRecordRepository = permissionDefinitionRecordRepository;
_modulePermissionCache = modulePermissionCache;
_abpPermissionCache = abpPermissionCache;
_currentTenant = currentTenant;
_currentUser = currentUser;
}
public async Task<HashSet<string>> GetModuleRoleNamesAsync()
{
if (!_currentUser.IsAuthenticated)
{
return new HashSet<string>();
}
var modulePermissionCacheItem = await _modulePermissionCache.GetOrAddAsync
(
ModulePermissionCacheKey,
GetModulePermissionCacheItemAsync,
() => new DistributedCacheEntryOptions
{
AbsoluteExpiration = DateTimeOffset.Now.AddDays(CacheExpirationDay)
}
);
return modulePermissionCacheItem.ModuleRoleNames;
}
public async Task<HashSet<string>> GetAbpPermissionsAsync()
{
if (!_currentUser.IsAuthenticated)
{
return new HashSet<string>();
}
var abpPermissionCacheItem = await _abpPermissionCache.GetOrAddAsync
(
AbpPermissionCacheKey,
GetAbpPermissionCacheItemAsync,
() => new DistributedCacheEntryOptions
{
AbsoluteExpiration = DateTimeOffset.Now.AddDays(CacheExpirationDay)
}
);
return abpPermissionCacheItem.Permissions;
}
private async Task<ModulePermissionCacheItem> GetModulePermissionCacheItemAsync()
{
var ordinaryRoleNames = await _identityUserRepository.GetRoleNamesAsync(_currentUser.Id.Value);
var moduleRoleNames = new HashSet<string>();
foreach (var ordinaryRoleName in ordinaryRoleNames)
{
var permissionGrantsAkaModuleRoles = await _permissionGrantRepository.GetListAsync(ModulePermissionConsts.RoleProviderName, ordinaryRoleName);
permissionGrantsAkaModuleRoles.ForEach(permissionGrantAkaModuleRole =>
{
moduleRoleNames.Add(permissionGrantAkaModuleRole.Name);
});
};
return new ModulePermissionCacheItem { ModuleRoleNames = moduleRoleNames };
}
private async Task<AbpPermissionCacheItem> GetAbpPermissionCacheItemAsync()
{
var permissions = new HashSet<string>();
var abpPermissionDefinitions = (await _permissionDefinitionRecordRepository.GetListAsync()).Where(pd => ModulePermissionConsts.AbpRelatedPermissionGroups.Contains(pd.GroupName));
return new AbpPermissionCacheItem { Permissions = abpPermissionDefinitions.Select(x => x.Name).ToHashSet() };
}
}
Ok - I have generated a test project (back-end and front-end) via a console. But I cannot run it due to various issues (both in back-end and front-end part). The server error log is inside the archive I have shared with you. The Angular errors have something to do with Angular versions discrepancies and packages incompatibilities, which is weird too, because I used a standard way to install the packages (+ install libs command from yarn). Could you please make it runnable + use Redis Cache instead of Distributed Cache and probably add OpenID server as a separate project (like we have)? Thank you.
No, we are not allowed to share the project. The log and exceptions is all I can provide. Sorry.
Honestly - I have no idea, sorry... I just thought you might give me some clue where to look for the route cause, because this only happens with ABP configration API request. Now I received it here. But it's also connected to ABP configuration call:
2025-10-15 01:28:50.966 -05:00 INF (-) Request starting HTTP/1.1 GET https://localhost:44338/api/abp/application-configuration?includeLocalizationResources=false - null null 2025-10-15 01:28:50.968 -05:00 INF (-) CORS policy execution successful. 2025-10-15 01:28:51.634 -05:00 WRN (-) The operation was canceled.System.OperationCanceledException: The operation was canceled. at System.Threading.CancellationToken.ThrowOperationCanceledException() at System.Threading.CancellationToken.ThrowIfCancellationRequested() at Microsoft.Extensions.Caching.StackExchangeRedis.RedisCache.GetAsync(String key, CancellationToken token) at Volo.Abp.Caching.DistributedCache
2.GetAsync(TCacheKey key, Nullable1 hideErrors, Boolean considerUow, CancellationToken token)2025-10-15 01:28:51.840 -05:00 INF (3-alexandis) Executing endpoint 'Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.AbpApplicationConfigurationController.GetAsync (Volo.Abp.AspNetCore.Mvc)' 2025-10-15 01:28:51.867 -05:00 INF (3-alexandis) 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-10-15 01:28:52.302 -05:00 ERR (-) ORA-01013: User requested cancel of current operation. https://docs.oracle.com/error-help/db/ora-01013/System.OperationCanceledException: ORA-01013: User requested cancel of current operation. https://docs.oracle.com/error-help/db/ora-01013/ ---> Oracle.ManagedDataAccess.Client.OracleException (0x80004005): ORA-01013: User requested cancel of current operation. https://docs.oracle.com/error-help/db/ora-01013/ at OracleInternal.ServiceObjects.OracleConnectionInternal.OpenAsyncHelper(CancellationToken cancellationToken) at OracleInternal.ServiceObjects.OracleConnectionInternal.OpenAsync(CancellationToken cancellationToken) --- End of inner exception stack trace --- at OracleInternal.ServiceObjects.OracleConnectionInternal.OpenAsync(CancellationToken cancellationToken) at Microsoft.EntityFrameworkCore.Storage.RelationalConnection.OpenInternalAsync(Boolean errorsExpected, CancellationToken cancellationToken) at Microsoft.EntityFrameworkCore.Storage.RelationalConnection.OpenInternalAsync(Boolean errorsExpected, CancellationToken cancellationToken) at Microsoft.EntityFrameworkCore.Storage.RelationalConnection.OpenAsync(CancellationToken cancellationToken, Boolean errorsExpected) at Oracle.EntityFrameworkCore.Storage.Internal.OracleRelationalCommandBuilderFactory.OracleRelationalCommandBuilder.OracleRelationalCommand.ExecuteReaderAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken) at Microsoft.EntityFrameworkCore.Query.Internal.SplitQueryingEnumerable1.AsyncEnumerator.InitializeReaderAsync(AsyncEnumerator enumerator, CancellationToken cancellationToken) at Oracle.EntityFrameworkCore.Storage.Internal.OracleExecutionStrategy.ExecuteAsync[TState,TResult](TState state, Func4 operation, Func4 verifySucceeded, CancellationToken cancellationToken) at Microsoft.EntityFrameworkCore.Query.Internal.SplitQueryingEnumerable1.AsyncEnumerator.MoveNextAsync() at Microsoft.EntityFrameworkCore.Query.ShapedQueryCompilingExpressionVisitor.SingleOrDefaultAsync[TSource](IAsyncEnumerable1 asyncEnumerable, CancellationToken cancellationToken) at Microsoft.EntityFrameworkCore.Query.ShapedQueryCompilingExpressionVisitor.SingleOrDefaultAsync[TSource](IAsyncEnumerable1 asyncEnumerable, CancellationToken cancellationToken) at Volo.Abp.Domain.Repositories.EntityFrameworkCore.EfCoreRepository3.FindAsync(TKey id, Boolean includeDetails, CancellationToken cancellationToken) at Castle.DynamicProxy.AsyncInterceptorBase.ProceedAsynchronous[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo) at Volo.Abp.Castle.DynamicProxy.CastleAbpMethodInvocationAdapterWithReturnValue1.ProceedAsync() at Volo.Abp.Uow.UnitOfWorkInterceptor.InterceptAsync(IAbpMethodInvocation invocation) at Volo.Abp.Castle.DynamicProxy.CastleAsyncAbpInterceptorAdapter1.InterceptAsync[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo, Func3 proceed) at Volo.Saas.Tenants.TenantStore.GetCacheItemAsync(Nullable1 id, String normalizedName) at Volo.Saas.Tenants.TenantStore.FindAsync(Guid id) at Volo.Abp.MultiTenancy.TenantConfigurationProvider.FindTenantAsync(String tenantIdOrName) at Volo.Abp.MultiTenancy.TenantConfigurationProvider.GetAsync(Boolean saveResolveResult) at Volo.Abp.AspNetCore.MultiTenancy.MultiTenancyMiddleware.InvokeAsync(HttpContext context, RequestDelegate next)2025-10-15 01:28:52.641 -05:00 INF (-) Request finished HTTP/1.1 GET https://localhost:44338/api/abp/application-configuration?includeLocalizationResources=false - 499 null application/json; charset=utf-8 1758.474ms 2025-10-15 01:28:53.106 -05:00 DBG (3-alexandis) Executing AbpApplicationConfigurationAppService.GetAsync()...
It does not work like this, causing the exception:
Unhandled exception. Autofac.Core.Activators.Reflection.NoConstructorsFoundException: No constructors on type 'Volo.Abp.Threading.NullCancellationTokenProvider' can be found with the constructor finder 'Autofac.Core.Activators.Reflection.DefaultConstructorFinder'.
So I tried another way:
[Dependency(ReplaceServices = true)]
[ExposeServices(typeof(ICancellationTokenProvider))]
public sealed class AlwaysNoneCancellationTokenProvider : ICancellationTokenProvider, ISingletonDependency
{
public CancellationToken Token => CancellationToken.None;
public IDisposable Use(CancellationToken cancellationToken)
{
return NullDisposable.Instance;
}
private sealed class NullDisposable : IDisposable
{
public static readonly NullDisposable Instance = new NullDisposable();
private NullDisposable() { }
public void Dispose() { }
}
}
But the error is still there.
No, there is no response:
However, I have noticed that when I start the host (AuthServer + API host), I get an exception in this method (even though there's nothing wrong with this very middleware - it's rather some common problem, which in a way affects application-configuration API call mostly):
public async Task InvokeAsync(HttpContext httpContext, IAbxRequestContext requestContext, IdentityUserManager userManager) { if (httpContext.Request.Path.Equals("/connect/token", StringComparison.OrdinalIgnoreCase) && httpContext.Request.Method == HttpMethods.Post && httpContext.Request.HasFormContentType) { var form = await httpContext.Request.ReadFormAsync(); if (form.TryGetValue("grant_type", out var grantType) && form.TryGetValue("tenant", out var tenant) && grantType == "switch_tenant") { httpContext.Response.OnStarting(() => { if (httpContext.Response.StatusCode == StatusCodes.Status200OK) { httpContext.Response.Cookies.Append( TenantResolverConsts.DefaultTenantKey, tenant.ToString(), new CookieOptions { Path = "/", HttpOnly = false, Expires = DateTimeOffset.Now.AddYears(10), SameSite = SameSiteMode.Strict, Secure = false }); } return Task.CompletedTask; }); } } await _next(httpContext); }
Which looks like this:
2025-10-13 16:44:46.649 -05:00 WRN (-) The operation was canceled.System.OperationCanceledException: The operation was canceled. at System.Threading.CancellationToken.ThrowOperationCanceledException() at System.Threading.CancellationToken.ThrowIfCancellationRequested() at Microsoft.Extensions.Caching.StackExchangeRedis.RedisCache.GetAsync(String key, CancellationToken token) at Volo.Abp.Caching.DistributedCache
2.GetAsync(TCacheKey key, Nullable1 hideErrors, Boolean considerUow, CancellationToken token)2025-10-13 16:44:46.800 -05:00 DBG (-) Getting not cache granted permissions from the repository for this provider name,key: R,Role 1 2025-10-13 16:44:46.813 -05:00 WRN (-) The operation was canceled.System.OperationCanceledException: The operation was canceled. at System.Threading.CancellationToken.ThrowOperationCanceledException() at System.Threading.CancellationToken.ThrowIfCancellationRequested() at Microsoft.Extensions.Caching.StackExchangeRedis.RedisCache.GetAsync(String key, CancellationToken token) at Volo.Abp.Caching.DistributedCache
2.GetAsync(TCacheKey key, Nullable1 hideErrors, Boolean considerUow, CancellationToken token)2025-10-13 16:44:46.817 -05:00 INF (-) Request finished HTTP/2 GET https://localhost:44308/api/account/profile-picture-file/f6bfc02f-4400-1256-f3db-39fed7dc74b6 - 499 null application/json; charset=utf-8 8763.1875ms 2025-10-13 16:44:46.934 -05:00 ERR (-) ---------- RemoteServiceErrorInfo ---------- { "code": null, "message": "An internal error occurred during your request!", "details": null, "data": null, "validationErrors": null }
2025-10-13 16:44:46.934 -05:00 ERR (-) ORA-01013: User requested cancel of current operation. https://docs.oracle.com/error-help/db/ora-01013/System.OperationCanceledException: ORA-01013: User requested cancel of current operation. https://docs.oracle.com/error-help/db/ora-01013/ ---> Oracle.ManagedDataAccess.Client.OracleException (0x80004005): ORA-01013: User requested cancel of current operation. https://docs.oracle.com/error-help/db/ora-01013/ at OracleInternal.ServiceObjects.OracleConnectionInternal.OpenAsyncHelper(CancellationToken cancellationToken) at OracleInternal.ServiceObjects.OracleConnectionInternal.OpenAsync(CancellationToken cancellationToken) --- End of inner exception stack trace --- at OracleInternal.ServiceObjects.OracleConnectionInternal.OpenAsync(CancellationToken cancellationToken) at Microsoft.EntityFrameworkCore.Storage.RelationalConnection.OpenInternalAsync(Boolean errorsExpected, CancellationToken cancellationToken) at Microsoft.EntityFrameworkCore.Storage.RelationalConnection.OpenInternalAsync(Boolean errorsExpected, CancellationToken cancellationToken) at Microsoft.EntityFrameworkCore.Storage.RelationalConnection.OpenAsync(CancellationToken cancellationToken, Boolean errorsExpected) at Oracle.EntityFrameworkCore.Storage.Internal.OracleRelationalCommandBuilderFactory.OracleRelationalCommandBuilder.OracleRelationalCommand.ExecuteReaderAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken) at Microsoft.EntityFrameworkCore.Query.Internal.SplitQueryingEnumerable
1.AsyncEnumerator.InitializeReaderAsync(AsyncEnumerator enumerator, CancellationToken cancellationToken) at Oracle.EntityFrameworkCore.Storage.Internal.OracleExecutionStrategy.ExecuteAsync[TState,TResult](TState state, Func4 operation, Func4 verifySucceeded, CancellationToken cancellationToken) at Microsoft.EntityFrameworkCore.Query.Internal.SplitQueryingEnumerable1.AsyncEnumerator.MoveNextAsync() at Microsoft.EntityFrameworkCore.Query.ShapedQueryCompilingExpressionVisitor.SingleOrDefaultAsync[TSource](IAsyncEnumerable1 asyncEnumerable, CancellationToken cancellationToken) at Microsoft.EntityFrameworkCore.Query.ShapedQueryCompilingExpressionVisitor.SingleOrDefaultAsync[TSource](IAsyncEnumerable1 asyncEnumerable, CancellationToken cancellationToken) at Volo.Abp.Domain.Repositories.EntityFrameworkCore.EfCoreRepository3.FindAsync(TKey id, Boolean includeDetails, CancellationToken cancellationToken) at Castle.DynamicProxy.AsyncInterceptorBase.ProceedAsynchronous[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo) at Volo.Abp.Castle.DynamicProxy.CastleAbpMethodInvocationAdapterWithReturnValue1.ProceedAsync() at Volo.Abp.Uow.UnitOfWorkInterceptor.InterceptAsync(IAbpMethodInvocation invocation) at Volo.Abp.Castle.DynamicProxy.CastleAsyncAbpInterceptorAdapter1.InterceptAsync[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo, Func3 proceed) at Volo.Saas.Tenants.TenantStore.GetCacheItemAsync(Nullable1 id, String normalizedName) at Volo.Saas.Tenants.TenantStore.FindAsync(Guid id) at Volo.Abp.MultiTenancy.MultiTenantConnectionStringResolver.FindTenantConfigurationAsync(Guid tenantId) at Volo.Abp.MultiTenancy.MultiTenantConnectionStringResolver.ResolveAsync(String connectionStringName) at Volo.Abp.Uow.EntityFrameworkCore.UnitOfWorkDbContextProvider1.ResolveConnectionStringAsync(String connectionStringName) at Volo.Abp.Uow.EntityFrameworkCore.UnitOfWorkDbContextProvider1.GetDbContextAsync() at Volo.Abp.Domain.Repositories.EntityFrameworkCore.EfCoreRepository2.GetDbSetAsync() at Volo.Abp.PermissionManagement.EntityFrameworkCore.EfCorePermissionGrantRepository.GetListAsync(String[] names, String providerName, String providerKey, CancellationToken cancellationToken) at Castle.DynamicProxy.AsyncInterceptorBase.ProceedAsynchronous[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo) at Volo.Abp.Castle.DynamicProxy.CastleAbpMethodInvocationAdapterWithReturnValue1.ProceedAsync() at Volo.Abp.Uow.UnitOfWorkInterceptor.InterceptAsync(IAbpMethodInvocation invocation) at Volo.Abp.Castle.DynamicProxy.CastleAsyncAbpInterceptorAdapter1.InterceptAsync[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo, Func3 proceed) at Volo.Abp.PermissionManagement.PermissionStore.SetCacheItemsAsync(String providerName, String providerKey, List1 notCacheKeys) at Volo.Abp.PermissionManagement.PermissionStore.GetCacheItemsAsync(String[] names, String providerName, String providerKey) at Volo.Abp.PermissionManagement.PermissionStore.IsGrantedAsync(String[] names, String providerName, String providerKey) at Volo.Abp.Authorization.Permissions.RolePermissionValueProvider.CheckAsync(PermissionValuesCheckContext context) at Volo.Abp.Authorization.Permissions.PermissionChecker.IsGrantedAsync(ClaimsPrincipal claimsPrincipal, String[] names) at Volo.Abp.Authorization.Permissions.PermissionChecker.IsGrantedAsync(String[] names) at Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.AbpApplicationConfigurationAppService.GetAuthConfigAsync() at Castle.DynamicProxy.AsyncInterceptorBase.ProceedAsynchronous[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo) at Volo.Abp.Castle.DynamicProxy.CastleAbpMethodInvocationAdapterWithReturnValue1.ProceedAsync() at Volo.Abp.GlobalFeatures.GlobalFeatureInterceptor.InterceptAsync(IAbpMethodInvocation invocation) at Volo.Abp.Castle.DynamicProxy.CastleAsyncAbpInterceptorAdapter1.InterceptAsync[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo, Func3 proceed) at Castle.DynamicProxy.AsyncInterceptorBase.ProceedAsynchronous[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo) at Volo.Abp.Castle.DynamicProxy.CastleAbpMethodInvocationAdapterWithReturnValue1.ProceedAsync() at Volo.Abp.Validation.ValidationInterceptor.InterceptAsync(IAbpMethodInvocation invocation) at Volo.Abp.Castle.DynamicProxy.CastleAsyncAbpInterceptorAdapter1.InterceptAsync[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo, Func3 proceed) at Castle.DynamicProxy.AsyncInterceptorBase.ProceedAsynchronous[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo) at Volo.Abp.Castle.DynamicProxy.CastleAbpMethodInvocationAdapterWithReturnValue1.ProceedAsync() at Volo.Abp.Auditing.AuditingInterceptor.InterceptAsync(IAbpMethodInvocation invocation) at Volo.Abp.Castle.DynamicProxy.CastleAsyncAbpInterceptorAdapter1.InterceptAsync[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo, Func3 proceed) at Castle.DynamicProxy.AsyncInterceptorBase.ProceedAsynchronous[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo) at Volo.Abp.Castle.DynamicProxy.CastleAbpMethodInvocationAdapterWithReturnValue1.ProceedAsync() at Volo.Abp.Uow.UnitOfWorkInterceptor.InterceptAsync(IAbpMethodInvocation invocation) at Volo.Abp.Castle.DynamicProxy.CastleAsyncAbpInterceptorAdapter1.InterceptAsync[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo, Func3 proceed) at Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.AbpApplicationConfigurationAppService.GetAsync(ApplicationConfigurationRequestOptions options) at Castle.DynamicProxy.AsyncInterceptorBase.ProceedAsynchronous[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo) at Volo.Abp.Castle.DynamicProxy.CastleAbpMethodInvocationAdapterWithReturnValue1.ProceedAsync() at Volo.Abp.GlobalFeatures.GlobalFeatureInterceptor.InterceptAsync(IAbpMethodInvocation invocation) at Volo.Abp.Castle.DynamicProxy.CastleAsyncAbpInterceptorAdapter1.InterceptAsync[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo, Func3 proceed) at Castle.DynamicProxy.AsyncInterceptorBase.ProceedAsynchronous[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo) at Volo.Abp.Castle.DynamicProxy.CastleAbpMethodInvocationAdapterWithReturnValue1.ProceedAsync() at Volo.Abp.Validation.ValidationInterceptor.InterceptAsync(IAbpMethodInvocation invocation) at Volo.Abp.Castle.DynamicProxy.CastleAsyncAbpInterceptorAdapter1.InterceptAsync[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo, Func3 proceed) at Castle.DynamicProxy.AsyncInterceptorBase.ProceedAsynchronous[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo) at Volo.Abp.Castle.DynamicProxy.CastleAbpMethodInvocationAdapterWithReturnValue1.ProceedAsync() at Volo.Abp.Auditing.AuditingInterceptor.ProceedByLoggingAsync(IAbpMethodInvocation invocation, AbpAuditingOptions options, IAuditingHelper auditingHelper, IAuditLogScope auditLogScope) at Volo.Abp.Auditing.AuditingInterceptor.InterceptAsync(IAbpMethodInvocation invocation) at Volo.Abp.Castle.DynamicProxy.CastleAsyncAbpInterceptorAdapter1.InterceptAsync[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo, Func3 proceed) at Castle.DynamicProxy.AsyncInterceptorBase.ProceedAsynchronous[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo) at Volo.Abp.Castle.DynamicProxy.CastleAbpMethodInvocationAdapterWithReturnValue1.ProceedAsync() at Volo.Abp.Uow.UnitOfWorkInterceptor.InterceptAsync(IAbpMethodInvocation invocation) at Volo.Abp.Castle.DynamicProxy.CastleAsyncAbpInterceptorAdapter1.InterceptAsync[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo, Func3 proceed) at Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.AbpApplicationConfigurationScriptController.Get() at lambda_method5124(Closure, Object) at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.TaskOfActionResultExecutor.Execute(ActionContext actionContext, IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments) at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeActionMethodAsync>g__Awaited|12_0(ControllerActionInvoker invoker, ValueTask`1 actionResultValueTask) at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.2025-10-13 16:44:46.938 -05:00 INF (-) Executed action Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.AbpApplicationConfigurationScriptController.Get (Volo.Abp.AspNetCore.Mvc) in 7969.9354ms 2025-10-13 16:44:46.941 -05:00 INF (-) Executed endpoint 'Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.AbpApplicationConfigurationScriptController.Get (Volo.Abp.AspNetCore.Mvc)' 2025-10-13 16:44:46.957 -05:00 WRN (-) The operation was canceled.System.OperationCanceledException: The operation was canceled. at System.Threading.CancellationToken.ThrowOperationCanceledException() at System.Threading.CancellationToken.ThrowIfCancellationRequested() at Microsoft.Extensions.Caching.StackExchangeRedis.RedisCache.GetAsync(String key, CancellationToken token) at Volo.Abp.Caching.DistributedCache
2.GetAsync(TCacheKey key, Nullable1 hideErrors, Boolean considerUow, CancellationToken token)
All cancelled operations on server side somehow have to do with this "ORA-01013: User requested cancel of current operation".
I have run it via curl and the request was successful. But the second request via Angular app was successful, too... So I am not sure this test helps us in some way...
Front-end is an Angular app. The link to the log is shared (sent to your email).
I would still take my chance to troubleshoot and try to eliminate the given issue. Especially taking into consideration, that this error has appeared very rarely in v8.x and now - every time I invoke a request.