Activities of "shodgson"

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:

  • Create a basic microservice solution with a Blazor Web App (Server + WASM).
  • Notice the pre-included Index.razor.css in the generated .Client assembly.
  • For testing, add background-color: red; to the existing .card-bg-image selector.
  • Launch the application via ABP Studio and log in.
  • Notice that the background-color: red is applied when using the server-side app but does not appear when the WASM loads..

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 of AbpAspNetCoreMvcClientCacheOptions 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;

  • New feature defined within the FeatureDefinitionProvider of the administration service.
  • Login into the host and notice the new feature is there in the features modal for my tenant
  • Login in my tenant and navigate in a page that calls a microservice that uses that feature value to enable/disable the particular feature
  • Go back to the host and Enable the feature for my tenant
  • Go back to the tenant, navigate to the page and notice that the feature is still set the disabled in my service.

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.&lt;InvokeActionMethodAsync&gt;g__Logged|12_1(ControllerActionInvoker invoker)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.&lt;InvokeNextActionFilterAsync&gt;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.&lt;InvokeInnerFilterAsync&gt;g__Awaited|13_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.&lt;InvokeNextExceptionFilterAsync&gt;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
Showing 1 to 10 of 19 entries
Learn More, Pay Less
33% OFF
All Trainings!
Get Your Deal
Mastering ABP Framework Book
The Official Guide
Mastering
ABP Framework
Learn More
Mastering ABP Framework Book
Made with ❤️ on ABP v10.0.0-preview. Updated on September 15, 2025, 14:41