I am using angular tenancy resolver with domain prefix method. I dont version my apis with that prefix just pass __tenant from angular login service to redirect URL which resolved right tenancy .
{ __tenant: this.multiTenancyService.domainTenant?.id }
One tenant is resolved I can easily resolve users login external provider. At the moment using Auth0 with Organizations. Internal users use Azure Ad.
Is there any guide how to implement it. I dont want to version all microservice API to use prefix either
I am trying to seed permission and localization data from microservice to administration service Db for microservice project. There should be some documentation how this ExternalLocalizer works and why I see that exception when I use LanguageManagementDataSeeder to seed Language data . Do you have any document how your manage permission and localization in distributed scenario. We are using comerical microservice template but with MongoDB.
It seems like when I disable cache . Its still using local cache for each microservice ? PermissionStore.GetCacheItemAsync: pn:R,pk:admin,n:Saas.Editions [13:11:59 DBG] PermissionStore.GetCacheItemAsync: pn:R,pk:admin,n:Saas.Tenants [13:11:59 DBG] PermissionStore.GetCacheItemAsync: pn:R,pk:admin,n:Saas.Editions [13:11:59 DBG] PermissionStore.GetCacheItemAsync: pn:R,pk:admin,n:Saas.Tenants [13:11:59 DBG] Found in the cache: pn:R,pk:admin,n:Saas.Tenants [13:11:59 DBG] Found in the cache: pn:R,pk:admin,n:Saas.Editions [13:11:59 DBG] Found in the cache: pn:R,pk:admin,n:Saas.Tenants [13:11:59 DBG] Found in the cache: pn:R,pk:admin,n:Saas.Editions [13:11:59 DBG] PermissionStore.GetCacheItemAsync: pn:C,pk:WpayConnect_Angular,n:Saas.Editions [13:11:59 DBG] PermissionStore.GetCacheItemAsync: pn:C,pk:WpayConnect_Angular,n:Saas.Editions [13:11:59 DBG] PermissionStore.GetCacheItemAsync: pn:C,pk:WpayConnect_Angular,n:Saas.Tenants [13:11:59 DBG] Found in the cache: pn:C,pk:WpayConnect_Angular,n:Saas.Editions [13:11:59 DBG] PermissionStore.GetCacheItemAsync: pn:C,pk:WpayConnect_Angular,n:Saas.Tenants [13:11:59 DBG] Found in the cache: pn:C,pk:WpayConnect_Angular,n:Saas.Editions [13:11:59 DBG] Found in the cache: pn:C,pk:WpayConnect_Angular,n:Saas.Tenants [13:11:59 DBG] Found in the cache: pn:C,pk:WpayConnect_Angular,n:Saas.Tenants
Above logs from dotnet when no Redis or Mongo cache enabled ? Can you please confirm that's the case ?
Is there any documentation for this seeding (permission and localization) data for microservices using administration service db connection string.
Do I have replace all Child Modules Code as well ? O just replace IDistributedCache Implementation ?
What will be the impact If i remove all references and run multiple instance of same service. I can use azure blob storage for distributed locking.?
Is it possible to remove Volo.Abp.Caching.StackExchangeRedis from microservices solution or any alternative implementations?. I have Implemented MondoDb cache for IDistributed cache but it seems like all core module use this package to cache all data.
When I try to seed Localization data to administration microservice database I get this exception.
[09:17:53 ERR] Sequence contains more than one element
System.InvalidOperationException: Sequence contains more than one element
at System.Linq.ThrowHelper.ThrowMoreThanOneElementException()
at System.Linq.Enumerable.TryGetSingle[TSource](IEnumerable`1 source, Boolean& found)
at System.Linq.Enumerable.SingleOrDefault[TSource](IEnumerable`1 source)
at MongoDB.Driver.AsyncCursorHelper.SingleOrDefaultAsync[T](Task`1 cursorTask, CancellationToken cancellationToken)
at Volo.Abp.Domain.Repositories.MongoDB.MongoDbRepository`2.FindAsync(Expression`1 predicate, Boolean includeDetails, CancellationToken cancellationToken)
at Volo.Abp.LanguageManagement.MongoDB.MongoLocalizationResourceRecordRepository.FindAsync(String name, CancellationToken cancellationToken)
at Castle.DynamicProxy.AsyncInterceptorBase.ProceedAsynchronous[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo)
at Volo.Abp.Castle.DynamicProxy.CastleAbpMethodInvocationAdapterWithReturnValue`1.ProceedAsync()
at Volo.Abp.Uow.UnitOfWorkInterceptor.InterceptAsync(IAbpMethodInvocation invocation)
at Volo.Abp.Castle.DynamicProxy.CastleAsyncAbpInterceptorAdapter`1.InterceptAsync[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo, Func`3 proceed)
at Volo.Abp.LanguageManagement.External.ExternalLocalizationSaver.LkSwGYsliR(SaveContext , LocalizationResource , String[] )
at Volo.Abp.LanguageManagement.External.ExternalLocalizationSaver.rJYwS5QxcO(SaveContext , LocalizationResource )
at Volo.Abp.LanguageManagement.External.ExternalLocalizationSaver.SaveAsync()
at Volo.Abp.LanguageManagement.External.ExternalLocalizationSaver.SaveAsync()
at Castle.DynamicProxy.AsyncInterceptorBase.ProceedAsynchronous(IInvocation invocation, IInvocationProceedInfo proceedInfo)
at Volo.Abp.Castle.DynamicProxy.CastleAbpMethodInvocationAdapter.ProceedAsync()
at Volo.Abp.Uow.UnitOfWorkInterceptor.InterceptAsync(IAbpMethodInvocation invocation)
at Volo.Abp.Castle.DynamicProxy.CastleAsyncAbpInterceptorAdapter`1.InterceptAsync(IInvocation invocation, IInvocationProceedInfo proceedInfo, Func`3 proceed)
at Volo.Abp.LanguageManagement.LanguageManagementDomainModule.<>c__DisplayClass6_1.dqYSTJLxrtjUOO4OmDO.MoveNext()
But if I remove AbpLocalizationResources Resource collection and Run new microservice first Data is seeded to AbpLocalizationResources and Localization works fine.
Also another issue is I am unable to overwrite localization strings for OpenIddict Module . I used this guide https://docs.abp.io/en/abp/7.0/Localization to overwrite .