I created a new solution on 9.2.0 and the issue is not there anymore. I will need to investigate a bit more to see what could potentially be the difference between 9.1.0 and 9.2.0 that make it works.
that does not seem to fix the issue. I have included the the css file manually in the bundle and I still have the issue.
Hello,
We’re attempting to use isolated CSS files for our Blazor components, but it appears not to work correctly when the WASM loads.
Steps to reproduce:
Is there something missing in the startup configuration?
Thanks in advance!
Hello I did create a new boilerplate and found out that it was working in the boilerplate.
I found out that the redis cache was not configured properly in my custom service and now it's working fine
Thanks for the help !!
Hello,
Not sure if I was clear enough but I already tried that with no success.
Also, I don't see any relevance to set that configuration in the blazor server cause like I said I want the updated feature value in my backend microservice and not the ** front-end blazor. **
thanks :)
[maliming] said: Hi
You can configure it in blazor web app and blazor web app client projects.
Because blazor web app has blazor server and wasm projects.
Yes,
but the AbpAspNetCoreMvcClientCacheOptions
comes from the Volo.Abp.AspNetCore.Mvc.Client
namespace wich can't work in the blazor client (WASM). I get ;
There was no runtime pack for Microsoft.AspNetCore.App available for the specified RuntimeIdentifier 'browser-wasm'.
Is there something I'm missing? Also, shouldn't this absolute expiration configuration be placed in my microservice project, since that's where I want to consume the feature value—not in the front-end?
Additionally, I tried setting the tenant feature value to a different value again and waited for about 30 minutes, but the updated value still wasn't fetched by my service.
Thanks.
[maliming] said: hi
The
ApplicationConfigurationDtoCacheAbsoluteExpiration
ofAbpAspNetCoreMvcClientCacheOptions
is five minutes by default.Can you try to change it to 10 seconds to test again?
Thanks.
Thanks for the response.
Where should I configure those options?
I have a blazor web app for the front-end.
I tried to;
Configure<AbpAspNetCoreMvcClientCacheOptions>(options =>
{
options.ApplicationConfigurationDtoCacheAbsoluteExpiration = TimeSpan.FromSeconds(5);
});
In the blazor server; the feature value in my microservice is still not updated after 5 seconds In the microservice that check the feature; same thing
Here's the simple snippet i'm using as an example in one of my service to condition on the feature value :
public async Task<PagedResultDto<ResultDto>> GetResultsAsync(Guid id, GetResultsDto input)
{
// not updated based on the value set in the feature management from the host UI
var isNewFlowEnabled = await featureChecker.IsEnabledAsync(AdministrationFeatures.NewFlow);
if (isNewFlowEnabled)
{
return await GetNewResultsAsync(input);
}
else
{
return await GetLegacyResultsAsync(input);
}
}
I still need someone to provide a way to have the cache invalidated when updating features in the host so that I can confidently rely on the Feature Management module to configure feature flags for my application and deterministically know when those updates will be reflected in the application.
Hello,
I have a blazor web app solution based on the microservice template.
I'm trying to check if a feature is enabled or not within one of my custom microservice but the feature value does not get updated when I change the value in the features modal for a particular tenant i'm using. Is there something i'm missing? I want to have the feature value updated directly when check if the feature is enabled or not in my microservice.
My solution setup;
Is there some caching that does not get invalidate when updaing the feature value?
I tried waiting a long period of time and the feature value does not get updated I tried logout/login and the feature value is still the same.
Thanks
[maliming] said: hi
You can try to set command timeout to 60 seconds or more
public override void ConfigureServices(ServiceConfigurationContext context) { //... Configure<AbpDbContextOptions>(options => { options.UseSqlServer(x => x.CommandTimeout(60)); }); //... }
Hello,
I tried to set the command timeout to 2 minutes and I face the same issue regardless after a minute. After a minute the export-as-csv
call fails and returns a 401 Unauthorized. Here's the stack trace I get:
[14:51:15 INF] Executing action method Volo.Abp.Identity.IdentityUserController.GetListAsCsvFileAsync (Volo.Abp.Identity.Pro.HttpApi) - Validation state: Valid
[14:51:15 WRN] ---------- RemoteServiceErrorInfo ----------
{
"code": null,
"message": "An internal error occurred during your request!",
"details": null,
"data": null,
"validationErrors": null
}
[14:51:15 WRN] Invalid download token: 1d7c6dcbc0854168a1c9abc4a2323f23
Volo.Abp.Authorization.AbpAuthorizationException: Invalid download token: 1d7c6dcbc0854168a1c9abc4a2323f23
at Volo.Abp.Identity.IdentityUserAppService.CheckDownloadTokenAsync(String token, Boolean isInvalidUsersToken)
at Volo.Abp.Identity.IdentityUserAppService.GetExportUsersAsync(GetIdentityUserListAsFileInput input)
at Volo.Abp.Identity.IdentityUserAppService.GetListAsCsvFileAsync(GetIdentityUserListAsFileInput input)
at Castle.DynamicProxy.AsyncInterceptorBase.ProceedAsynchronous[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo)
at Volo.Abp.Castle.DynamicProxy.CastleAbpMethodInvocationAdapterWithReturnValue`1.ProceedAsync()
at Volo.Abp.GlobalFeatures.GlobalFeatureInterceptor.InterceptAsync(IAbpMethodInvocation invocation)
at Volo.Abp.Castle.DynamicProxy.CastleAsyncAbpInterceptorAdapter`1.InterceptAsync[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo, Func`3 proceed)
at Castle.DynamicProxy.AsyncInterceptorBase.ProceedAsynchronous[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo)
at Volo.Abp.Castle.DynamicProxy.CastleAbpMethodInvocationAdapterWithReturnValue`1.ProceedAsync()
at Volo.Abp.Authorization.AuthorizationInterceptor.InterceptAsync(IAbpMethodInvocation invocation)
at Volo.Abp.Castle.DynamicProxy.CastleAsyncAbpInterceptorAdapter`1.InterceptAsync[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo, Func`3 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, AbpAuditingOptions options, IAuditingHelper auditingHelper, IAuditLogScope auditLogScope)
at Volo.Abp.Auditing.AuditingInterceptor.InterceptAsync(IAbpMethodInvocation invocation)
at Volo.Abp.Castle.DynamicProxy.CastleAsyncAbpInterceptorAdapter`1.InterceptAsync[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo, Func`3 proceed)
at Castle.DynamicProxy.AsyncInterceptorBase.ProceedAsynchronous[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo)
at Volo.Abp.Castle.DynamicProxy.CastleAbpMethodInvocationAdapterWithReturnValue`1.ProceedAsync()
at Volo.Abp.Validation.ValidationInterceptor.InterceptAsync(IAbpMethodInvocation invocation)
at Volo.Abp.Castle.DynamicProxy.CastleAsyncAbpInterceptorAdapter`1.InterceptAsync[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo, Func`3 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.CastleAsyncAbpInterceptorAdapter`1.InterceptAsync[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo, Func`3 proceed)
at lambda_method4261(Closure, Object)
at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.AwaitableObjectResultExecutor.Execute(ActionContext actionContext, IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeActionMethodAsync>g__Logged|12_1(ControllerActionInvoker invoker)
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)
[14:51:15 WRN] Code:
[14:51:15 INF] AuthenticationScheme: Bearer was challenged.
[14:51:15 INF] Executed action Volo.Abp.Identity.IdentityUserController.GetListAsCsvFileAsync (Volo.Abp.Identity.Pro.HttpApi) in 68.2107ms
[14:51:15 INF] Executed endpoint 'Volo.Abp.Identity.IdentityUserController.GetListAsCsvFileAsync (Volo.Abp.Identity.Pro.HttpApi)'
[14:51:15 INF] AUDIT LOG: [401: GET ] /api/identity/users/export-as-csv