Hello ABP Team,
We are working with ABP Framework (Angular UI) and using the built-in <abp-modal> component.
We need to increase the width of a single modal only, without affecting other modals globally.
🔍 What we are trying to achieve
Make one specific modal wider (XL / ~90% viewport width)
Keep all other modals unchanged
Use supported / recommended ABP approach
Avoid hacks or deprecated Angular features
This modal contains complex content (tabs + editable tables), so the default width is too restrictive for a good UX.
🧪 What we have already tried
size="xl"
<abp-modal size="xl">
➡️ No effect.
dialogClass input
<abp-modal [dialogClass]="'modal-xl'">
➡️ Angular compilation error: Can't bind to 'dialogClass' since it isn't a known property of 'abp-modal'.
CSS via component SCSS
.concept-modal-xl .modal-dialog { max-width: 90vw; }
➡️ No effect due to ViewEncapsulation and modal being rendered outside the component DOM.
CSS via global styles (styles.scss / theme.scss)
.modal-xl .modal-dialog { max-width: 90vw; }
➡️ Works only if applied globally, but this affects all modals, which we want to avoid.
modalClass attribute (as per documentation)
<abp-modal modalClass="modal-xl">
➡️ No visual change in width.
📖 Documentation referenced
https://abp.io/docs/latest/framework/ui/angular/modal
We followed the documentation, but we couldn’t find a clear, working example of how to change the width of only one specific <abp-modal>.
❓ Our questions
What is the official and supported way to change the width of a specific <abp-modal> in ABP Angular?
Is there a way to pass custom options to the underlying NgbModal (e.g. windowClass, size, or similar)?
If this is not supported, what is the recommended alternative for complex editors that require wider layouts?
🛠 Environment
ABP Framework: latest
UI: Angular
Theme: Lepton
Bootstrap: v5
Thank you very much. We appreciate guidance on the correct ABP-recommended approach.
Best regards.
We are using ABP 8.x (or 9/10.x if applicable) with the SaaS module enabled and database-per-tenant architecture. The tenant is correctly created, and the table SaasTenantConnectionStrings contains a valid "Default" connection string for that TenantId.
However, during runtime ABP is not switching the connection string. All data is always saved into the Host database regardless of the tenant connection string.
What we already verified
The tenant exists in SaasTenants.
The connection string exists in SaasTenantConnectionStrings with Name = "Default".
The connection string points to a different database and that database exists.
Permissions and authentication are working correctly.
Requests are successfully authenticated and the application resolves the user identity, but data is still persisted in the Host DB.
Expected behavior
ABP should switch the connection string when a tenant is resolved, and EF Core should write data into the tenant's isolated database.
Actual behavior
ABP always uses the Host database even though a tenant-specific connection string is present. No exceptions are thrown. EF Core always connects to the Host DB.
Additional notes
The issue occurs even when calling the application service methods that use CurrentTenant.
We confirmed that the connection string for the tenant is correct by testing it manually.
We also checked the DbContext configuration and module configuration, but ABP still ignores the tenant connection string.
No domain resolution or pipeline configuration seems to affect the problem; the behavior is consistent.
Request
We need assistance validating:
Whether ABP is correctly resolving the tenant in the current HTTP request.
Whether EF Core is correctly switching the connection string for the DbContext.
Whether there is any misconfiguration in our DbContext, module setup, or multitenancy configuration that prevents ABP from using the tenant connection string.
Please advise how to debug or what additional logs to produce so we can identify why ABP always uses the Host database.
Hello ABP Team,
I would like to request support regarding two related issues with SaaS tenant connection strings in ABP Commercial.
When using the Angular UI to configure a tenant's connection string:
The endpoint CheckConnectionStringAsync is called correctly.
The backend validates the connection successfully (returns true).
However, when clicking Save, the Angular application never sends the PUT request:
PUT /api/saas/tenants/{id}/connection-strings
This PUT action never appears in browser Network logs, and therefore the backend never receives it.
Permissions are not the problem — my admin role has all SaaS tenant permissions including ManageConnectionStrings.
Questions:
Under what conditions does the Angular SaaS UI skip the PUT request?
Does the UI require the connection string name to always be "Default"?
If the database already contains a connection string with a different name (e.g., "Financial"), does the UI ignore it and therefore never trigger the update?
Is this a known issue in the current ABP Angular version?
I am trying to use a remote SQL Server instance with the following format:
Server=45.xxx.xxx.xxx\SQLEXPRESS2014;Database=Financial;User Id=xxx;Password=xxx;TrustServerCertificate=True;
The CheckConnectionString endpoint returns TRUE, so the connection works.
However, I want to confirm the expected/official behavior:
Questions:
Does ABP support SQL Server remote instances using IP\InstanceName format, or is ABP officially limited to localhost connections?
If ABP supports remote SQL servers, what is the correct recommended connection-string format for:
Named instances?
SQL Browser disabled?
Specific ports?
When using:
Server=45.xxx.xxx.xxx\InstanceName;
should ABP automatically resolve the SQL Browser port, or must the instance be accessed using:
Server=45.xxx.xxx.xxx,PortNumber;
Is there any known limitation in ABP SaaS tenant connection-string checking related to remote or named SQL Server instances?
Additional context
ABP Commercial 8.x
Frontend: Angular
Backend: ASP.NET Core
Multi-tenancy enabled (Database-per-tenant mode)
CheckConnectionString works fine in all tests
The actual save/PUT never happens
I can provide a SQL dump of SaasTenantConnectionStrings if needed
Thank you very much, I will wait for your guidance.
Hello, I am working on an ABP project (version Pro - Team License). Yesterday everything worked perfectly: I created new entities, generated migrations, updated the database, ran the API, and both Swagger and the Angular UI loaded without issues. I could log in normally using the default admin user.
Today, after reopening the solution, the API behaves unexpectedly:
Swagger and the Angular logo no longer appear when running the API. It looks like the application is not initializing properly.
When I try to log in, I receive an error saying that the ClientId is missing, as if the default OpenIddict client was never seeded.
I tried dropping and recreating the database (using Update-Database):
Sometimes it works, sometimes it does not.
Most of the time, the default admin user is NOT created, which should happen during the DataSeeder execution.
I did not change anything related to authentication, database configuration, or appsettings between yesterday and today.
It seems like:
the DataSeeder is not being executed reliably,
or the project is not connecting to the database during startup,
or OpenIddict initialization is failing silently, causing the Client and admin user seeding to be skipped.
Could you help me understand why the initialization is inconsistent and why the default admin user and default clients are not being created when recreating the DB?
Thank you.