Activities of "VMPProgramador"

In our Blazor Web App (InteractiveAuto), the WebAssembly client takes about 7 seconds after each F5 before the application can be used, even with the browser cache already filled. Almost all of this time is spent in the browser, not waiting for the server. We measured the startup and split it into the steps below.

| Step | Time | |---|---| | Module localization texts (20 to 29 languages per module) | ~2.0 s | | Module registration and Autofac container | ~1.3 s | | Static asset list sent to the client (resource-collection.js) | ~1.2 s | | API descriptions of the static proxies (generate-proxy.json) | ~0.9 s | | Layout, menu, toolbar and first page | ~0.9 s | | Application configuration and localization requests | ~0.7 s | | Total | ~7.1 s |

Taking as an example the step with the largest weight in the table above, the module localization texts (~2.0 s): when a module's texts are used for the first time, the WebAssembly client loads the files of every language that module ships, which is between 20 and 29 languages per ABP module. Because each F5 restarts the client, this repeats on every F5.

Our application has only two languages configured, pt-PT and en. As we understand it, the only other languages ABP needs are the fallback cultures used to resolve a text: the parent culture (pt) and the default culture of each resource. Since switching language reloads the page, the remaining languages appear to be loaded but never used.

  • Why does the client need to load all languages of each module, instead of only the languages configured in the application?
  • If there is no specific need, could the client load only the configured languages and their fallback cultures? Or is there already a supported way to do this?

Thank you.

Hi,

Thank you for the feedback and for considering this suggestion.

I was also wondering if there is a preferred way to share ideas and suggestions for potential improvements to the framework, particularly as we'd like to make the best use of our available support tickets while still being able to contribute ideas that could benefit the platform.

Thank you.

Currently, the Chat module displays an avatar with the user's initials (first and last name) in both the contact list and the conversation header.

Since Account Pro already allows users to upload a profile picture, it would be useful if the Chat module could use these images for avatars, providing a more consistent experience across the application.

Suggestion

  • Display the user's profile picture in the contact list and conversation header, when available.
  • Keep the user's initials as a fallback for users who have not set a profile picture.
  • Optionally, provide a configuration setting to enable or disable this functionality.

Currently, implementing this behaviour requires replacing the entire Chat page, making it difficult to keep up with future updates to the module. Supporting this functionality directly within the Chat module would allow for this customization while preserving compatibility with future updates.

In SaaS → Tenants → Actions → Connection strings, clicking Test next to the default connection string shows the error 415 Unsupported Media Type, even when the connection string is valid.

The problem happens when the application is running in WebAssembly mode, but not in server mode.

Steps to reproduce

1. Server mode —> works

  1. Open a private window and sign in to the application.
  2. Go to SaaS → Tenants → Actions → Connection strings.
  3. Uncheck Use the shared database and fill in a valid connection string.
  4. Click Test.
  5. Confirm that the test runs successfully.

2. WebAssembly mode —> fails

  1. In the same window, reload the page with F5.
  2. Repeat the test with the same connection string.
  3. Confirm that the error 415 Unsupported Media Type is shown.

When the LeptonX style is set to System and the operating system is in dark mode, part of the application is shown in light mode.

The LeptonX parts of the layout (side menu, page background, cards) are correctly shown in dark mode, but the MudBlazor components stay light: data grid rows (for example, on the Users and Tenants pages), lists and some content areas have a white background, which makes them hard to read.

It happens mostly when the page is loaded in server mode (first visit or full page reload).

Steps to reproduce

  1. Set DefaultStyle = LeptonXStyleNames.System in the LeptonX options.
  2. Set the operating system to dark mode.
  3. Open the application in a private window, or in a browser with no cache, and go to Administration → Identity management → Users.
  4. Result: the menu and the page are dark, but the MudBlazor components (grid rows, lists and other content areas) are shown in light mode.

Could a member of the support team please review this ticket?

When a user is created through the admin UI with Send confirmation email enabled, the user is created successfully, but no confirmation email is sent.

However, clicking Verify on the "Confirm user" page sends the email successfully.

Error

When processing the user-created event through RabbitMQ, AccountIdentityUserCreatedEventHandler fails while generating the confirmation token, with the following exception:

A DbContext can only be created inside a unit of work!
   at Volo.Abp.Identity.AbpSingleActiveTokenProvider.GenerateAsync(...)
   at Volo.Abp.Account.Emailing.AccountIdentityUserCreatedEventHandler.HandleEventAsync(...)

The exception occurs before the email is sent, so no confirmation email is generated. RabbitMQ repeatedly retries the failed message.

Change tested

In a test environment, the AccountIdentityUserCreatedEventHandler.cs file in the Volo.Abp.Account.Pro.Public.Application project was modified as follows:

Before:

public async Task HandleEventAsync(IdentityUserCreatedEto eventData)

After:

[UnitOfWork]
public virtual async Task HandleEventAsync(IdentityUserCreatedEto eventData)

The following namespace must also be added:

using Volo.Abp.Uow;

No other changes were made to the method.

After this change, the confirmation email was sent successfully, and the unit of work errors no longer appeared in the logs.

Sources

During a normal sign-in, ABP checks whether the user's email has been confirmed and redirects them to the confirmation page if it hasn't. However, when a password change is required, the user is prompted to change their password first. After changing it, the user is signed in and can access the application without being asked to confirm their email. The confirmation check only takes place at the next sign-in.

Steps to reproduce

  1. Enable Abp.Identity.SignIn.RequireConfirmedEmail.
  2. Create a user with both Send confirmation email and Force password change enabled.
  3. Sign in as that user and change the password when prompted.
  4. Confirm that the user can access the application without having confirmed their email.
  5. Sign out and sign in again. The user is then prompted to confirm their email.

A user without the Chat → Messaging → Searching permission can open a conversation with someone they have never interacted with. However, when they attempt to send the first message, an unhandled Blazor error occurs and the page must be reloaded.

The server rejects the request due to an authorization failure (Forbidden). However, the error is not handled by the client, causing the Chat page to stop working correctly.

Could you please clarify the expected behavior in this scenario?

Stack trace

Blazor (client)

2026-10-16 16:25:08.389 +01:00 [ERR] Unhandled exception in circuit 'CoCj56m3pNdJeVtR9zxKwq3Sm8mkn3TVGSpmr0FnQaA'.
Volo.Abp.Http.Client.AbpRemoteCallException: Forbidden
   at Volo.Abp.Http.Client.ClientProxying.ClientProxyBase`1.ThrowExceptionForResponseAsync(HttpResponseMessage response)
   ...
   at Volo.Chat.Conversations.ConversationClientProxy.SendMessageAsync(SendMessageInput input)
   at Volo.Chat.Blazor.MudBlazor.Pages.Chat.Index.WouAAVFdL()
   at Volo.Chat.Blazor.MudBlazor.Pages.Chat.Index.yMtunRrM39()
   at MudBlazor.MudBaseButton.OnClickHandler(MouseEventArgs ev)

HttpApi.Host (server)

2026-10-16 16:25:08.099 +01:00 [WRN] Exception of type 'Volo.Abp.Authorization.AbpAuthorizationException' was thrown.
Code: Volo.Authorization:010004
Message: Authorization failed! Given requirement has not granted for given resource: {ResourceName}
Volo.Abp.Authorization.AbpAuthorizationException: Exception of type 'Volo.Abp.Authorization.AbpAuthorizationException' was thrown.
   at Volo.Chat.Conversations.ConversationAppService.SendMessageAsync(SendMessageInput input)
   ...

The problem

A user with only the Conversation → Messages permission cannot access the Chat page and is redirected to the Access Denied page.

However, granting the Conversation → Setting Management permission as well allows the page to work normally. This is unexpected, as managing settings should be independent of using Chat.

Steps to reproduce

  1. Create a permission profile with only Conversation → Messages enabled.
  2. Sign in with a user assigned to that profile and navigate to /Chat.
  3. Confirm that access is denied.
  4. Grant the profile the Setting Management permission as well and repeat the test.
  5. Confirm that the page now opens normally.

Analysis

During testing, we found that the Chat page retrieves the module's settings when it initializes, even when the user only needs to access their messages.

This request appears to be the cause of the issue. The OnInitializedAsync method in Index.razor.cs (in Volo.Chat.Blazor.MudBlazor) calls SettingsAppService.GetAsync, which requires the Chat.SettingManagement permission at class level. As a result, users without this permission cannot complete the page initialization.

Showing 1 to 10 of 12 entries
Boost Your Development
ABP Live Training
Packages
See Trainings
Mastering ABP Framework Book
The Official Guide
Mastering
ABP Framework
Learn More
Mastering ABP Framework Book
Made with ❤️ on ABP v10.8.0-preview. Updated on November 02, 2026, 06:56
1
ABP Assistant
🔐 You need to be logged in to use the chatbot. Please log in first.