Hi,
I'm not changing anything in the database.
The database is being updated with the update localisations via one of the ABP packages.
All i do is update the en.json file in domain.shared.localizations.service directory and then start the microservices. This then gets automatically added to the AbpLocalizationTexts table in the admin service somehow (not via any of my code).
Cheers,
Steve.
hi
You can clear the redis and try again.
Hi,
That will fix it yes.
But should it not be updating the cache when it updates the values in the database?
I don't really want to be wiping my entire redis cache every time i do a deployment that contains a translation update.
Cheers,
Steve.
Hi,
I'm currently using the microservice template.
After upgrading to version 7, updates to the translation files are not appearing in the application.
After updating the translation file and starting the application i can see the new changes correctly being added to the AbpLocalizationTexts table. However, when you start the application and it fetches the localizations from "api/abp/application-localization?cultureName=en&onlyDynamics=false" it returns the old version of the file.
Looking in redis it doesn't look like the cache has been updated with the new values.
Am i missing something? Is there something new i need to be doing in v7?
Thanks,
Steve.
Hello,
Yes, gateways in microservice template locates the re-routing services and add them as
swagger definitions
. Currently, we are trying to find a way to cover this scenario better, where microservices do not expose any swagger ui but the gateway exposes the swagger ui with all the endpoints it re-routes to.However the solution will most likely differ based on the gateway library.
Currently, you can alter the gateway swagger ui manually.
OK thanks,
Steve.
Hi, I'm currently using the microservice template for one of my projects. I had quick question about swagger and the Web Gateway.
The diagram at the top of this page (https://docs.abp.io/en/commercial/latest/startup-templates/microservice/gateways) show the web applications (in my case Angular) connecting to the services through the Web Gateway.
In my Openshift configuration im planning on setting it so the services are only accessible via the Web Gateway as this seems to make sense.
However, this looks like it will break the swagger page on the Web Gateway. As far as i can tell when selecting an option from the top right drop down on the Web Gateway swagger page your browser will attempt to contact the selected service and pull down its swagger definition. This obviously fails if you have restricted access to the service to be just through the Web Gateway.
Am i misunderstanding something or is this how it's meant to be?
Thanks,
Steve.
Hi,
I'd like to just check that i'm doing login redirection correctly in abp v6 Angular Lepton-x.
When you log out of the Angular frontend it calls authserver/connect/logout
This looks like it ends up calling the OpenIddict Logout controller here https://github.com/abpframework/abp/blob/cc54b34f2777dae7697b92ea47c2c424e089632f/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/Controllers/LogoutController.cs
Am i right in saying that by default when logging out via the logout menu (shown below) in the Angular frontend you will always get redirected to the root of your Angular site?
I believe this is correct because in the Logout Controller a new AuthenticationProperties object is created and the redirectUri is set to "/"
This redirection is allowed because the OpenIddict data seed adds localhost to the PostLogoutRedirectUris for the Angular application in the database.
Am i correct in thinking that if i want to change the page that is redirected to after logging out i need to update the PostLogoutRedirectUris field in the database and also then update the Logout call in the frontend to pass the "post_logout_redirect_uri" parameter as below:
authService.logout({"post_logout_redirect_uri": "http://localhost:4200/somepage"}).subscribe()
Is the above correct? Or should i be doing this another way?
Thanks,
Steve.
OK, thanks for that.
Cheers,
Steve.
Hi,
I'm trying to figure out how to remove items from the "General Settings" menu in the Angular lepton-x theme without replacing the component.
This section
Is this possible?
Thanks,
Steve.
Hi, i'm struggling to diagnose an intermittent issue i'm having during e2e testing.
Seemingly at random requests to api/abp/application-configuration will fail with the below error. I've had a look through the configuration fetching code on Github and as far as i can tell we're not updating anything that would be causing this error.
Any ideas?
[10:52:05 INF] Executing endpoint 'Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.AbpApplicationConfigurationController.GetAsync (Volo.Abp.AspNetCore.Mvc)' [10:52:05 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() on controller Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.AbpApplicationConfigurationController (Volo.Abp.AspNetCore.Mvc).
[10:52:05 WRN] The cookie 'XSRF-TOKEN' has set 'SameSite=None' and must also set 'Secure'.
[10:52:05 ERR] ---------- RemoteServiceErrorInfo ----------
{
"code": null,
"message": "An internal error occurred during your request!",
"details": null,
"data": {},
"validationErrors": null
}
[10:52:05 ERR] Operations that change non-concurrent collections must have exclusive access. A concurrent update was performed on this collection and corrupted its state. The collection's state is no longer correct.
System.InvalidOperationException: Operations that change non-concurrent collections must have exclusive access. A concurrent update was performed on this collection and corrupted its state. The collection's state is no longer correct.
at System.Collections.Generic.Dictionary2.TryInsert(TKey key, TValue value, InsertionBehavior behavior) at System.Collections.Generic.Dictionary
2.set_Item(TKey key, TValue value)
at Volo.Abp.DependencyInjection.AbpLazyServiceProvider.LazyGetService(Type serviceType)
at Volo.Abp.DependencyInjection.AbpLazyServiceProvider.LazyGetService(Type serviceType, Object defaultValue)
at Volo.Abp.DependencyInjection.AbpLazyServiceProvider.LazyGetService[T](T defaultValue)
at Volo.Abp.Domain.Repositories.BasicRepositoryBase1.get_CancellationTokenProvider() at Volo.Abp.Domain.Repositories.BasicRepositoryBase
1.GetCancellationToken(CancellationToken preferredValue)
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.CastleAsyncAbpInterceptorAdapter
1.InterceptAsync[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo, Func3 proceed) at Volo.Abp.PermissionManagement.PermissionStore.SetCacheItemsAsync(String providerName, String providerKey, List
1 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.ClientPermissionValueProvider.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 Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.AbpApplicationConfigurationAppService.GetAsync()
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.CastleAsyncAbpInterceptorAdapter
1.InterceptAsync[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo, Func3 proceed) at Castle.DynamicProxy.AsyncInterceptorBase.ProceedAsynchronous[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo) at Volo.Abp.Castle.DynamicProxy.CastleAbpMethodInvocationAdapterWithReturnValue
1.ProceedAsync()
at Volo.Abp.Auditing.AuditingInterceptor.ProceedByLoggingAsync(IAbpMethodInvocation invocation, IAuditingHelper auditingHelper, IAuditLogScope auditLogScope)
at Volo.Abp.Auditing.AuditingInterceptor.InterceptAsync(IAbpMethodInvocation invocation)
at Volo.Abp.Castle.DynamicProxy.CastleAsyncAbpInterceptorAdapter1.InterceptAsync[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo, Func
3 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.CastleAsyncAbpInterceptorAdapter
1.InterceptAsync[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo, Func3 proceed) 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.CastleAsyncAbpInterceptorAdapter1.InterceptAsync[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo, Func
3 proceed)
at Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.AbpApplicationConfigurationController.GetAsync()
at lambda_method1417(Closure , Object )
at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.AwaitableObjectResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeActionMethodAsync>g__Awaited|12_0(ControllerActionInvoker invoker, ValueTask1 actionResultValueTask) at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeNextActionFilterAsync>g__Awaited|10_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted) at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context) at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted) at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeInnerFilterAsync>g__Awaited|13_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted) at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextExceptionFilterAsync>g__Awaited|26_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted) [10:52:05 INF] Executing ObjectResult, writing value of type 'Volo.Abp.Http.RemoteServiceErrorResponse'.
Thanks,
Steve.
Hi, i'm currently using the microservice template using Azure openId connect as the authentication provider. I've just upgraded to 5.3.4. As part of the upgrade a number of endpoints have been moved under the new Account Service.
After the upgrade users attempting to edit their profile information receive an error message. I'm assuming this is because their auth token doesn't contain a claim for the Account Service. This is easily solved by having the user log off and back on, however i was wondering if there is a way to force all currently logged in users to have to reauthenticate?
Thanks,
Steve.