Activities of "dhill"

Hi there.

Yes it's still an issue.

Here is the video

https://drive.google.com/file/d/1b7krwYqcBSHcI_ZZumGrWN6hIRk9Evb1/view?usp=drive_link

  • Steps to reproduce the issue:

On the Tenants page

Steps: Navigate to the Tenants page Click on the New tenant button The form does not open when users click on the button once - they have to click on it again

Once the form opens, users see that the "Tenant admin's email address" and "Tenant admin's password" show error messages by default

  1. Click on the Cancel or Close Button
  2. Click on the New tenant button again

Users see that the error message is no longer visible

  1. Reload the page
  2. Try clicking on the New Tenant button

The issue occurs again (happens when users load the Tenants page - only the 1st time)

Attached is the video for reference

  • Exception message and full stack trace:
  • Steps to reproduce the issue:

ABP 9.2.2 with Blazor Web App

We are getting random exceptions System.ObjectDisposedException when the system is under load.

======================================================== Dump Analysis for

Thread 6892 ExitCode E0434352 ExitCodeString CLR EXCEPTION DefaultHostName xxx.azurewebsites.net Managed Exception = System.ObjectDisposedException:Instances cannot be resolved and nested lifetimes cannot be created from this LifetimeScope as it (or one of its parent scopes) has already been disposed. CallStack - Managed Exception

 Autofac.Core.Lifetime.LifetimeScope.ThrowDisposedException()
 Blazorise.ComponentActivator.CreateInstance(System.Type)
 Microsoft.AspNetCore.Components.RenderTree.Renderer.InstantiateChildComponentOnFrame(Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrame[], Int32, Int32)
 Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.InitializeNewSubtree(DiffContext ByRef, Int32)
 Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.InsertNewFrame(DiffContext ByRef, Int32)
 Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.AppendDiffEntriesForRange(DiffContext ByRef, Int32, Int32, Int32, Int32)
 Microsoft.AspNetCore.Components.Rendering.ComponentState.RenderIntoBatch(Microsoft.AspNetCore.Components.Rendering.RenderBatchBuilder, Microsoft.AspNetCore.Components.RenderFragment, System.Exception ByRef)
 Microsoft.AspNetCore.Components.RenderTree.Renderer.ProcessRenderQueue()
 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
 Microsoft.AspNetCore.Components.HtmlRendering.Infrastructure.StaticHtmlRenderer.HandleException(System.Exception)
 Microsoft.AspNetCore.Components.RenderTree.Renderer.ProcessRenderQueue()
 Microsoft.AspNetCore.Components.ComponentBase.StateHasChanged()
 Microsoft.AspNetCore.Components.Rendering.RendererSynchronizationContext.&lt;InvokeAsync&gt;g__Execute|8_0(System.ValueTuple`3<System.Runtime.CompilerServices.AsyncTaskMethodBuilder,System.Action,Microsoft.AspNetCore.Components.Rendering.RendererSynchronizationContext>)
 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(System.Threading.Tasks.Task, System.Threading.Tasks.ConfigureAwaitOptions)
 Volo.Abp.AspNetCore.Components.Web.LeptonXTheme.Components.ApplicationLayout.Common.ContentToolbar+<<OnInitializedAsync>b__7_1>d.MoveNext()
 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
 System.Threading.Tasks.Task+<>c.<ThrowAsync>b__128_1(System.Object)
 System.Threading.QueueUserWorkItemCallback.Execute()
 System.Threading.ThreadPoolWorkQueue.Dispatch()
 System.Threading.PortableThreadPool+WorkerThread.WorkerThreadStart()

CallStack - Crashing Thread

 InlinedCallFrame
 InlinedCallFrame
 System.Runtime.EH.DispatchEx(System.Runtime.StackFrameIterator ByRef, ExInfo ByRef)
 System.Runtime.EH.RhThrowEx(System.Object, ExInfo ByRef)
 HelperMethodFrame
 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
 System.Threading.Tasks.Task+<>c.<ThrowAsync>b__128_1(System.Object)
 System.Threading.QueueUserWorkItemCallback.Execute()
 System.Threading.ThreadPoolWorkQueue.Dispatch()
 System.Threading.PortableThreadPool+WorkerThread.WorkerThreadStart()
 DebuggerU2MCatchHandlerFrame

Native Call Stack

KERNELBASE!RaiseException+0x6c coreclr!SfiNext+0xea0fe coreclr!InlinedCallFrame::`vftable'

======================================================== Dump Analysis for

Thread 6892 ExitCode E0434352 ExitCodeString CLR EXCEPTION DefaultHostName xxx.azurewebsites.net CallStack - Crashing Thread

I tried the suggested css but it looks like those classes aren't on blazor. I'm guessing it has to be set on the components or something.

I'll wait for a fix.

Sorry forgot to mention. Blazor Web App.

I'm trying the CSS suggested by the bot now.

Tenants | Need space between Search and Filter buttons

We are using ABP 9.2.1

Looks like there is a css issue where there needs to be a space in between the search and the filter buttons.

Is there a way to override consts without downloading the entire project?

If not can we override the logger to trim anything beyond 30 chars so it'll save properly?

Would like to avoid adding the entire project if we can.

We're getting this exception:

An error occurred while saving the entity changes. See the inner exception for details. String or binary data would be truncated in table 'SafetyPlusWeb.dbo.AbpSessions', column 'IpAddresses'. Truncated value: '10.1.0.23,10.1.1.7,10.1.1.14,10.1.1.15,10.1.0.18,10.1.0.32,10.1.0.4,10.1.1.12,10.1.1.10,10.1.0.25,10'.

How can we increase the size of IpAddresses field on the AbpSessions table?

  • ABP Framework version: v8.3.1
  • UI Type: Blazor WASM / Blazor Server
  • Database System: EF Core (SQL Server)

We need to implement Oauth segregated by Tenant.

I looked into using https://abp.io/modules/Volo.OpenIddict.Pro but it does not seem to support this.

I found a partial solution in this question but it's missing a lot of details. https://abp.io/support/questions/4404/How-to-enable-Openiddict-for-multitenant

Can you provide some guidance on how to accomplish this?

Thanks so much.

To help anyone else looking. I wanted to share how we fixed the normalized name for multi-tenant subdomain.

Please refund the ticket :)

using System.Text.RegularExpressions;
using Volo.Abp.DependencyInjection;
using Volo.Abp.MultiTenancy;

namespace MyProject.Blazor.Services
{
    [Dependency(ReplaceServices = true)]
    [ExposeServices(typeof(ITenantNormalizer))]
    public class CustomUpperInvariantTenantNormalizer : ITenantNormalizer, ITransientDependency
    {
        public virtual string? NormalizeName(string? name)
        {
            if (string.IsNullOrEmpty(name))
            {
                return name;
            }

            // Normalize, convert to lower case, replace spaces and special characters with hyphens
            string subdomain = name.Normalize()
                                    .ToLowerInvariant()
                                    .Replace(" ", "-")
                                    .Replace("_", "-");

            // Remove any characters that are not letters, numbers, or hyphens
            subdomain = Regex.Replace(subdomain, @"[^a-z0-9-]", "");

            // Ensure the subdomain does not start or end with a hyphen
            subdomain = subdomain.Trim('-');

            return subdomain;
        }
    }
}
-- Update NormalizedName field on Existing Tenants
DROP TABLE IF EXISTS #TenantsNormalizedNames;
CREATE TABLE #TenantsNormalizedNames
(
    Id UNIQUEIDENTIFIER NOT NULL,
    NormalizedName NVARCHAR(255) NULL
);

INSERT INTO #TenantsNormalizedNames
    (Id, NormalizedName)
SELECT Id,
    UPPER(
        TRIM('-' FROM 
            REPLACE(
                REPLACE(
                    REPLACE(
                        REPLACE(
                            REPLACE(
                                REPLACE(
                                    REPLACE(
                                        REPLACE(
                                            REPLACE(
                                                REPLACE(
                                                    REPLACE(
                                                        REPLACE(
                                                            REPLACE(
                                                                NormalizedName, ' ', '-'
                                                            ), '_', '-'
                                                        ), '.', '-'
                                                    ), '!', ''
                                                ), '@', ''
                                            ), '#', ''
                                        ), '$', ''
                                    ), '%', ''
                                ), '&', ''
                            ), '*', ''
                        ), '(', ''
                    ), ')', ''
                ), '''', ''  -- Handling the single quote
            )
        )
    ) AS NormalizedName
FROM
    [dbo].[SaasTenants];


SELECT t.NormalizedName, s.NormalizedName
FROM
    [dbo].[SaasTenants] t
JOIN #TenantsNormalizedNames s
    ON t.Id = s.Id
WHERE
    t.NormalizedName <> s.NormalizedName;


UPDATE t
SET  t.NormalizedName = s.NormalizedName
FROM
    [dbo].[SaasTenants] t
JOIN #TenantsNormalizedNames s
    ON t.Id = s.Id
WHERE
    t.NormalizedName <> s.NormalizedName;    


SELECT Name, NormalizedName 
FROM 
    [dbo].[SaasTenants]
Showing 11 to 20 of 80 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.1.0-preview. Updated on December 05, 2025, 12:34
1
ABP Assistant
🔐 You need to be logged in to use the chatbot. Please log in first.